// 商机ID
var opportunityId = $('#opportunityId').val();
// 客户ID
var customerId = $('#customerId').val();
// 客户名称
var customerName = $('#customerName').val();
// 用户名称
var userName = $('#userName').val();
// 当前登录用户名
var operatorName = $('#operatorName').val();

$(function () {
    // url所带参数
    var urlParam = getRequest();

    // 返回按钮功能
    $('#backBtn').on('click', function () {
        var $thisTabs = parent.$('.mt-nav-bar .nav-tabs').find('li.active');
        var navTab = parent.$multitabs._getNavTab($thisTabs);
        if (urlParam.type == 'admin') {
            openTab("商机列表","/front/opportunityManager/opportunityForm");
        } else {
            openTab("商机列表","/front/opportunityManager/userOpportunityForm");
        }
    })

    // 解决table中点击行选中与checkbox冲突问题
    $('table').on('load-success.bs.table', function (e,data) {
        $(e.target).find('label.lyear-checkbox').on('click', function (e) {
            e.stopPropagation();
        })
    });

    // 商机联系人联系方式判断
    var telNumber = opportunityData.contactInformation;
    if (telNumber) {
        $('#telNumber').html(transTelNumber(telNumber)).next('.tel-button').show(0);
    } else {
        $('#telNumber').html('暂无联系方式').next('.tel-button').hide(0);
    }
    // console.log(telNumber);

    // 下拉列表
    $('select').selectpicker();

    // 预计签单时间
    $('#estimatedTime').datepicker({
        language: "zh-CN",
        autoclose: true,
        clearBtn: true,
        startDate: new Date(),
        todayHighlight: true,
        format: "yyyy-mm-dd",
    });

    // 商机状态切换
    wizardStatus();

    // 协作人 添加 删除 回显
    cooperate();

    // 获取联系人
    getContact();
    // 键盘输入时重新查询列表
    $('#followContact').keyup(debounce(contactFilter, 300));

    // 获取常用语
    phrase();

    // 反显商机动态
    var pageIndex = 1;
    echoTrends(pageIndex, 10);
    $(document).on('click', '.loading-more', function () {
        var pageSize = 10;
        pageIndex++
        echoTrends(pageIndex, pageSize);
    });

    // 商机联系人
    $('#contactList').bootstrapTable({
        class: 'table table-bordered table-hover table-striped',
        url: '/opportunity/opportunityContactList',
        method: 'post',                     // 请求方式
        contentType: "application/x-www-form-urlencoded",// 请求内容类型
        dataType: "json",                   // 数据类型
        striped: true,                      // 是否显示行间隔色
        sortable: true,                     // 是否启用排序
        sortOrder: "desc",                  // 排序方式
        sortName: 'createTm',               // 排序字段
        cache: false,                       // 是否使用缓存
        showColumns: false,                 // 显示隐藏列
        showRefresh: false,                 // 显示刷新按钮
        showToggle: false,                  // 切换显示样式
        showFooter: false,                  // 显示Table脚部
        pagination: true,                   // 是否显示分页
        showPaginationSwitch: false,        // 是否显示分页按钮
        clickToSelect: false,               // 是否启用点击选中行
        maintainSelected: false,            // 分页是否保留选中
        singleSelect: false,
        minimumCountColumns: 2,             // 最少要显示的列数
        undefinedText: '-',                  // cell没有值时显示
        sidePagination: "server",           // 分页方式：client客户端分页，server服务端分页
        // serverSort: true,
        uniqueId: 'opportunityContactId',
        idField: 'opportunityContactId',
        pageSize: 10,                       // 每页的记录行数
        pageNumber: 1,                      // 初始化加载第1页，默认第1页
        pageList: "[10, 20, 30]",           // 可供选择的每页的行数

        // cardView: true,
        queryParams: contactQueryParams,//查询参数
        columns: [
            {title: '商机联系人ID', field: 'opportunityContactId', visible: false},
            {title: '联系人', field: 'contactName', align: 'left', valign: 'middle'},
            {title: '职务', field: 'contactPosition', align: 'left', valign: 'middle'},
            {title: '联系方式', field: 'contactInformation', align: 'left', valign: 'middle', formatter: contactFormat},
            {title: '联系人类型', field: 'contactType', align: 'left', valign: 'middle',
                formatter: function (value) {
                    return value == 0 ? '首要联系人' : '次要联系';
                }
            },
            {title: '是否启用联系人', field: 'abolishState', align: 'right', valign: 'middle',
                events: {
                    'change input': function (e, value, row, index) {
                        var state = $(e.target).is(':checked');
                        var data = {
                            opportunityContactId: row.opportunityContactId,
                            abolishState: state ? 1 : 2
                        }
                        $.ajax({
                            url: '/opportunity/updateAbolishState',
                            async: false,
                            type: "post",
                            dataType: "json",
                            contentType: "application/json;charset=utf-8",
                            data: JSON.stringify(data),
                            success: function (data) {
                                if (data.code == '000000') {
                                    console.log('修改联系人状态成功');
                                    $('#contactList').bootstrapTable('refresh');
                                } else {
                                }
                            },
                            error: function () {
                                // promptInfo('获取常用语列表失败，请重试！');
                                console.log('error')
                            }
                        });
                    }
                },
                formatter: function (value) {
                    var html = '<label class="lyear-switch switch-solid switch-primary">';
                    html += '<input type="checkbox"' + (value == 1 ? 'checked' : '') + '><span></span></label>';
                    return html;
                },
            },
        ],
        responseHandler: function (result) {
            // console.log(result)
            if(result.code == "000000") {
                var obj = {
                    "rows": result.data,
                    "total": result.totalRecords//总条数
                };
            } else {
                var obj = {
                    "total": 0,
                    "rows": [],
                }
            }
            return obj;
        },
        onPostBody: function (data) {

        },
        onLoadSuccess: function (data) {
            // console.log(data)
        }
    });

    // 产品列表
    $('#productTable').bootstrapTable({
        class: 'table table-bordered table-hover table-striped',
        url: '/opportunity/opportunityProductList',
        method: 'post',                     // 请求方式
        contentType: "application/x-www-form-urlencoded",// 请求内容类型
        dataType: "json",                   // 数据类型
        striped: true,                      // 是否显示行间隔色
        sortable: true,                     // 是否启用排序
        sortOrder: "desc",                  // 排序方式
        sortName: 'createTm',               // 排序字段
        cache: false,                       // 是否使用缓存
        showColumns: false,                 // 显示隐藏列
        showRefresh: false,                 // 显示刷新按钮
        showToggle: false,                  // 切换显示样式
        showFooter: false,                  // 显示Table脚部
        pagination: true,                   // 是否显示分页
        showPaginationSwitch: false,        // 是否显示分页按钮
        clickToSelect: true,                // 是否启用点击选中行
        maintainSelected: false,            // 分页是否保留选中
        singleSelect: false,
        minimumCountColumns: 2,             // 最少要显示的列数
        undefinedText: '-',                  // cell没有值时显示
        sidePagination: "server",           // 分页方式：client客户端分页，server服务端分页
        // serverSort: true,
        uniqueId: 'opportunityProductId',
        pageSize: 10,                       // 每页的记录行数
        pageNumber: 1,                      // 初始化加载第1页，默认第1页
        pageList: "[10, 20, 30]",           // 可供选择的每页的行数
        queryParams: productQueryParams,//查询参数
        columns: [
            {title: '主键', field: 'opportunityProductId', visible: false},
            {title: '产品名称', field: 'productName', align: 'left', valign: 'middle'},
            {title: '产品类别', field: 'productCategories', align: 'left', valign: 'middle', formatter: productFormat.categories},
            {title: '产品原价', field: 'productOriginalPrice', align: 'left', valign: 'middle', events: productFormat.priceCategoryEvent, formatter: productFormat.priceChose},
            {title: '产品单价', field: 'productUnitPrice', align: 'left', valign: 'middle', events: productFormat.priceCategoryEvent, formatter: productFormat.priceChose},
            {title: '产品会员价', field: 'productMemberPrice', align: 'left', valign: 'middle', events: productFormat.priceCategoryEvent, formatter: productFormat.priceChose},
            {title: '当前报价', field: 'productCurrentPrice', align: 'left', valign: 'middle', width: '160', events: productFormat.priceEvent, formatter: productFormat.discountPrice},
            {title: '数量', field: 'productNumber', align: 'left', valign: 'middle', width: '160', events: productFormat.numberEvent, formatter: productFormat.number},
            {title: '总计', field: 'productTotal', visible: false, align: 'left', valign: 'middle', width: '160', formatter: productFormat.total},
            {title: '操作', field: 'productOperation', align: 'right', valign: 'middle', width: '100', formatter: productFormat.operation},
            {title: '产品编码', field: 'productCode', visible: false},
        ],
        responseHandler: function (result) {
            // console.log(result)
            if(result.code == "000000") {
                var obj = {
                    "rows": result.data,
                    "total": result.totalRecords//总条数
                };
            } else {
                var obj = {
                    "total": 0,
                    "rows": [],
                }
            }
            return obj;
        },
        onPostBody: function (data) {
            // console.log('产品表格onPostBody-数据：', data);
            /**
             * 计价总计 = 选择的价格 * 数量
             * 报价总计 = 优惠后的价格 * 数量
             * 报价折扣 = 报价总计 / 计价总计 * 100%
             * 优惠金额 = 计价总计 - 报价总计
             * */
            var valuationTotal = 0;        // 计价总计
            var discountTotal = 0;         // 报价总计
            for (var i = 0; i < data.length; i++) {
                if (data[i].productCategories == 1) {
                    // 会员价格
                    valuationTotal += data[i].productMemberPrice * 100 * data[i].productNumber;
                } else {
                    // 非会员价格
                    var priceType;
                    switch (data[i].chose) {
                        case 0:
                            priceType = 'productOriginalPrice';
                            break;
                        case 1:
                            priceType = 'productUnitPrice';
                            break;
                        case 2:
                            priceType = 'productMemberPrice';
                            break;
                        case null:
                            priceType = 'productUnitPrice';
                            break;
                    }
                    // console.log(data[i].chose, priceType)
                    // 计价总计 = 原价 * 数量
                    valuationTotal += data[i].productOriginalPrice * 100 * data[i].productNumber;
                }
                discountTotal += data[i].productCurrentPrice * 100 * data[i].productNumber;
            }

            // console.log('优惠后价格：' + discountTotal, '计价总计：' + valuationTotal);
            // 报价总计
            $('#discountTotal').html(discountTotal / 100);
            // 优惠金额
            $('#discountAmount').html((valuationTotal - discountTotal) / 100);
            // 报价折扣
            if (valuationTotal) {
                $('#discount').html((100 - discountTotal / valuationTotal * 100).toFixed(2) + '%');
            } else {
                $('#discount').html('-');
            }

            // 计价总计
            $('#valuationTotal').val(valuationTotal / 100);

            // 优惠券按钮开关
            if (data.length == 1) {
                $('#couponTableToolbar button').prop('disabled', false);
            } else {
                $('#couponTableToolbar button').prop('disabled', true);
                $('#couponTable').bootstrapTable('removeAll');
            }
        },
        onLoadSuccess: function (data) {
            // console.log(data)
        }
    });
    // 产品列表 - 添加产品弹窗列表
    $('#addProductModal').on('show.bs.modal', function () {
        $('#memberProductListTable').bootstrapTable('destroy');
        $('#memberProductListTable').bootstrapTable({
            classes: 'table table-bordered table-hover table-striped',
            url: '/customerMemberProduct/selectSjCustomerMemberProductVOList',  // 请求地址
            method: 'post',//请求方式
            contentType: "application/x-www-form-urlencoded",//请求内容类型
            dataType: "json",                   // 数据类型
            striped: true,                      // 是否显示行间隔色
            sortable: true,                     // 是否启用排序
            sortOrder: "desc",                  // 排序方式
            sortName: 'sellingCardPrice',       // 排序字段
            cache: false,                       // 是否使用缓存
            showColumns: false,                 // 显示隐藏列
            showRefresh: false,                 // 显示刷新按钮
            showToggle: false,                  // 切换显示样式
            showFooter: false,                  // 显示Table脚部
            pagination: true,                   // 是否显示分页
            clickToSelect: true,                // 是否启用点击选中行
            maintainSelected: true,             // 分页是否保留选中
            singleSelect: false,
            minimumCountColumns: 2,             // 最少要显示的列数
            undefinedText: '-',                  // cell没有值时显示
            sidePagination: "server",           // 分页方式：client客户端分页，server服务端分页

            serverSelected: true,// 开启后端分页记住已选项功能
            serverSelectedField: "memberProductId",// 已选项的唯一识别主键

            // serverSort: true,
            uniqueId: 'memberProductId',
            idField: 'memberProductId',
            pageSize: 5,                        // 每页的记录行数
            pageNumber: 1,                      // 初始化加载第1页，默认第1页
            pageList: "[5, 10, 15, 20]",        // 可供选择的每页的行数

            queryParams: function(params) {
                params.pageSize = params.limit;
                params.pageIndex = (params.offset / params.limit) + 1;
                params.sortName = params.sort;                  //排序列名
                params.sortOrder = params.order;                //排序方式
                params.tag = 1;

                return params
            },//查询参数
            columns: [
                {title: '主键', field: 'customerProductId', visible: false,
                    formatter: function (value, row) {
                        return row.memberProductId;
                    }
                },
                {checkbox: true, visible: true},
                {title: '会员卡名称', field: 'memberCardName', align: 'left', valign: 'middle'},
                {title: '会员产品编码', field: 'memberProductCode', align: 'left', valign: 'middle'},
                {title: '售卡价格', field: 'sellingCardPrice', sortable: true, align: 'left', valign: 'middle'},
            ],
            responseHandler: function (result) {
                if(result.code == "000000") {
                    var obj = {
                        "rows": result.data,
                        "total": result.totalRecords//总条数
                    };
                } else {
                    var obj = {
                        "total": 0,
                        "rows": [],
                    }
                }
                return obj;
            },
            onLoadSuccess: function (data) {
                // console.log(data)
            },
            onLoadError: function (status) {
                if (status == 403) {
                    alert("权限不足！禁止访问！");
                } else {
                    //加载失败时执行
                    alert("加载失败！");
                }
            },
            formatLoadingMessage: function () {
                return "请稍等，加载中...";
            },
            formatNoMatches: function () {
                return '无符合条件的记录';
            },
        });
        $('#nomemberProductListTable').bootstrapTable('destroy');
        $('#nomemberProductListTable').bootstrapTable({
            classes: 'table table-bordered table-hover table-striped',
            url: '/customerProduct/selectCustomerProductList',
            method: 'post',//请求方式
            contentType: "application/x-www-form-urlencoded",//请求内容类型
            dataType: "json",                   // 数据类型
            striped: true,                      // 是否显示行间隔色
            sortable: true,                     // 是否启用排序
            sortOrder: "desc",                  // 排序方式
            sortName: 'productName',            // 排序字段
            cache: false,                       // 是否使用缓存
            showColumns: false,                 // 显示隐藏列
            showRefresh: false,                 // 显示刷新按钮
            showToggle: false,                  // 切换显示样式
            showFooter: false,                  // 显示Table脚部
            pagination: true,                   // 是否显示分页
            showPaginationSwitch: false,        // 是否显示分页按钮
            clickToSelect: true,                // 是否启用点击选中行
            maintainSelected: true,             // 分页是否保留选中
            singleSelect: false,
            minimumCountColumns: 2,             // 最少要显示的列数
            undefinedText: '-',                  // cell没有值时显示
            sidePagination: "server",           // 分页方式：client客户端分页，server服务端分页

            serverSelected: true,// 开启后端分页记住已选项功能
            serverSelectedField: "customerProductId",// 已选项的唯一识别主键

            // serverSort: true,
            uniqueId: 'customerProductId',
            idField: 'customerProductId',
            pageSize: 5,                        // 每页的记录行数
            pageNumber: 1,                      // 初始化加载第1页，默认第1页
            pageList: "[5, 10, 15, 20]",        // 可供选择的每页的行数

            queryParams: function(params) {
                params.pageSize = params.limit;
                params.pageIndex = (params.offset / params.limit) + 1;
                params.sortName = params.sort;                  //排序列名
                params.sortOrder = params.order;                //排序方式
                params.tag = 0;

                return params
            },//查询参数
            columns: [
                {title: '主键', field: 'customerProductId', visible: false},
                {checkbox: true, visible: true},
                {title: '产品名称',field: 'productName', sortable: true, align: 'left', valign: 'middle'},
                {title: '产品原价', field: 'productOriginalPrice', align: 'left',valign: 'middle'},
                {title: '产品单价', field: 'productUnitPrice', align: 'left',valign: 'middle'},
                {title: '产品会员价', field: 'productMemberPrice', align: 'left', valign: 'middle'},
            ],
            responseHandler: function (result) {
                if(result.code == "000000") {
                    var obj = {
                        "rows": result.data,
                        "total": result.totalRecords//总条数
                    };
                } else {
                    var obj = {
                        "total": 0,
                        "rows": [],
                    }
                }
                return obj;
            },
            onLoadSuccess: function (data) {
                // console.log(data)
            },
            onLoadError: function (status) {
                if (status == 403) {
                    alert("权限不足！禁止访问！");
                } else {
                    //加载失败时执行
                    alert("加载失败！");
                }
            },
            formatLoadingMessage: function () {
                return "请稍等，加载中...";
            },
            formatNoMatches: function () {
                return '无符合条件的记录';
            },
        });
    }).on('hide.bs.modal', function () {
        $(this).find('.input-group input[type="text"]').val('');
        $('#productTab li:eq(0) a').tab('show')
    });
    $('#memberProductSearch').on('click', function () {
        $('#memberProductListTable').bootstrapTable('refreshOptions', {
            queryParams: function (params) {
                params.pageSize = params.limit;
                params.pageIndex = (params.offset / params.limit) + 1;
                params.sortName = params.sort;                  //排序列名
                params.sortOrder = params.order;                //排序方式
                params.tag = 1;

                params.memberCardName = $('#searchMemberProductName').val();
                return params;
            }
        })
    });
    $('#nomemberProductSearch').on('click', function () {
        $('#nomemberProductListTable').bootstrapTable('refreshOptions', {
            queryParams: function (params) {
                params.pageSize = params.limit;
                params.pageIndex = (params.offset / params.limit) + 1;
                params.sortName = params.sort;                  //排序列名
                params.sortOrder = params.order;                //排序方式
                params.tag = 0;

                params.productName = $('#searchNomemberProductName').val();
                return params;
            }
        })
    });
    $('#addProductModal .nav-tabs a[href="#member"]').on('click', function () {
        $('#searchMemberProductName').val('');
        $('#memberProductListTable').bootstrapTable('refresh');
    })
    $('#addProductModal .nav-tabs a[href="#nonmember"]').on('click', function () {
        $('#searchNomemberProductName').val('');
        $('#nomemberProductListTable').bootstrapTable('refresh');
    });

    // 创建合同条件判断
    $('#addContractAction input').on('click', function (e) {
        var opportunityStatus = $('.wizard li.active').index() + 1;
        if (opportunityStatus !== 6) {
            e.preventDefault();
            promptInfo('只有商机状态为“赢单”时，才可以创建合同！');
            return;
        }

        var productTableData = $('#productTable').bootstrapTable('getData', true);
        var type = $(this).val();
        var flag = false;

        if (type == 'newOrder' || type == 'renewOrder') {
            // 新单商机 && 续费商机
            for (var i = 0; i < productTableData.length; i++) {
                if (type == 'newOrder' && productTableData[i].productCategories == 1) {
                    flag = true;
                    break;
                }
                if (type == 'renewOrder' && productTableData[i].productCategories == 1 && productTableData[i].whetherRenew == 0) {
                    flag = true;
                    break;
                }
            }
            if (!flag) {
                e.preventDefault();
                type == 'newOrder' ? promptInfo('当前方案不存在会员产品，无法创建新单商机合同') : promptInfo('当前方案不存在可续费会员产品，无法创建续费商机合同');
                // $('#addContractAction button').prop('disabled', true);
                return;
            }
            if (type == 'renewOrder') {
                // 获取续费期内的合同
                $.ajax({
                    url: '/opportunity/opportunityCustomerContract',
                    async: false,
                    type: "post",
                    dataType: "json",
                    data: {
                        customerId
                    },
                    success: function (data) {
                        if (data.code == '000000') {
                            if (data.data.length == 0) {
                                e.preventDefault();
                                promptInfo('您目前不存在可续费合同，无法创建续费合同！');
                            } else {
                                var optionHtml;
                                for (var i = 0; i < data.data.length; i++) {
                                    var startDate = new Date(data.data[i].contractStartDate).Format("yyyy-MM-dd");
                                    var endDate = new Date(data.data[i].contractEndDate).Format("yyyy-MM-dd");
                                    optionHtml += '<option value="' + data.data[i].contractId + '" data-start="'+startDate+'" data-end="'+endDate+'">主会员合同：' + startDate + ' 至 ' + endDate + '</option>';
                                }
                                $('#opportunityCustomerContract').html(optionHtml);
                                $('#opportunityCustomerContract').selectpicker('refresh');
                                $('#addContractAction button').prop('disabled', false);
                            }
                        }
                    }
                });
                return;
            }
        } else {
            // 非会员商机
            for (var i = 0; i < productTableData.length; i++) {
                if (productTableData[i].productCategories == 1) {
                    flag = true;
                    break;
                }
            }
            if (flag) {
                e.preventDefault();
                promptInfo('当前方案存在会员产品，无法创建非会员商机合同');
                // $('#addContractAction button').prop('disabled', true);
                return;
            }
            if (productTableData.length == 0) {
                e.preventDefault();
                promptInfo('当前产品列表为空，请添加产品！');
                return;
            }
        }
        $('#addContractAction button').prop('disabled', false);
    });

    // 附加费用
    $('#surcharge').on('change', function () {
        if ($(this).val() == '' || $(this).val() == '0') {
            $('.surcharge-remarks').hide();
        } else {
            $('.surcharge-remarks').show();
        }
    });

    // 新建合同弹窗关闭 初始化弹窗内容
    $('#addOpportunityContractModal').on('hide.bs.modal', function () {
        $('#customerForm').bootstrapValidator('destroy');
        $('#customerForm input:not([type="radio"]), #customerForm textarea').val('');
        $('input[name="applyElectronicContract"][value="0"]').prop('checked', true);
        $('#addOpportunityContractModal select').val('').selectpicker('refresh');
        $('#accountList').html('').prop('disabled', true).selectpicker('refresh');
        $('#addCooperateBtn').prop('disabled', true);
        cooperateTable();
    });

    var contractType = opportunityData.opportunityContractType;
    if (contractType == 1) {
        // 合同已创建，禁止页面相关操作
        $('#contactList').bootstrapTable('hideColumn', 'abolishState');
        $('#productTable').bootstrapTable('hideColumn', 'productOperation');
        $('#cooperateInput').prop('disabled', true);

        // 优惠券反显
        couponTableInit();
    }

    $('#addContactModal').on('show.bs.modal', function () {
        addContactModal();
    })

    // 初始化合作开发人员列表
    cooperateTable();
    // 初始化合作开发人员列表-分公司下拉菜单
    companiesList();

    $('#paymentMethod').on('changed.bs.select', function () {
        if ($(this).val() == 3) {
            // 余额支付重置并隐藏合作开发人员
            hideCooperate();
        } else if ($(this).val() == 2) {
            // 线下支付显示合作开发人员
            $('.cooperate-well').show();
        }
    });

    // 优惠券弹窗相关功能
    $('#addCouponModal').on('show.bs.modal', function () {
        $('#couponCategories label:first-child input').prop('checked', true);
        couponTable(true);
    }).on('click', '#couponSearch', function () {
        search.call(this, $('#couponListTable'), couponQueryParams);
    }).on('click', '#couponCategories input', function () {
        $('#searchCouponName').val('');
        $(this).val() == '1' ? couponTable(true) : couponTable(false, 'checkbox');
    });

    // 优惠券列表
    $('#couponTable').bootstrapTable({
        class: 'table table-bordered table-hover table-striped',
        striped: true,          // 是否显示行间隔色
        sortable: true,         // 是否启用排序
        pagination: false,      // 是否显示分页
        undefinedText: '-',     // cell没有值时显示
        uniqueId: 'chsCustomerCouponId',
        columns: [
            {title: '主键', field: 'chsCustomerCouponId', visible: false},
            {title: '优惠券名称',field: 'couponName', align: 'left', valign: 'middle'},
            {title: '优惠券类型', field: 'couponType',align: 'left', valign: 'middle', formatter: couponFormat.couponType},
            {title: '优惠券额度', field: 'couponQuota',align: 'left', valign: 'middle',
                formatter: function (value, row, index) {
                    return value == '0' ? undefined : value;
                }
            },
            {title: '优惠券优惠折扣', field: 'couponDiscount',align: 'left', valign: 'middle',
                formatter: function (value, row, index) {
                    return value == '0' ? undefined : value;
                }
            },
            {title: '操作', field: 'giftOperate', align: 'right', valign: 'middle', formatter: couponFormat.operation},
        ],
        onPostBody: function (data) {},
    });
});

/**
 * 功能：合作开发人员列表初始化
 * */
function cooperateTable() {
    $('#cooperateTable').bootstrapTable('destroy')
    $('#cooperateTable').bootstrapTable({
        class: 'table table-bordered table-hover table-striped',
        striped: true,                  // 是否显示行间隔色
        sortable: true,                 // 是否启用排序
        pagination: false,              // 是否显示分页
        minimumCountColumns: 2,         // 最少要显示的列数
        undefinedText: '-',             // cell没有值时显示
        uniqueId: 'userId',
        toolbar: '#cooperateTableToolbar',
        columns: [
            {title: '主键', field: 'userId', visible: false},
            {title: '主键', field: 'companyId', visible: false},
            {title: '合作开发人员姓名', field: 'userName', align: 'left', valign: 'middle'},
            {title: '分配金额', field: 'allocationMount',align: 'left', valign: 'middle',
                events: {
                    'change input': function (e, value, row, index) {
                        var inputValue = $($(e.target)[0]).val().replace(/^\D*(\d*(?:\.\d{0,4})?).*$/g, '$1');
                        inputValue = parseInt(inputValue);
                        if (inputValue == 0) {
                            promptInfo('分配金额必须大于零，请重新输入！', function () {
                                $($(e.target)[0]).val('');
                            });
                            return;
                        }
                        $($(e.target)[0]).val(inputValue);
                        // 输入新值，先清空当前分配金额
                        row.allocationMount = '';
                        // 计算总计分配金额是否超过合同实际总金额
                        var flag = cooperateAmount(inputValue);
                        if (flag) {
                            // 未超过直接赋值
                            row.allocationMount = inputValue;
                        } else {
                            promptInfo('分配金额总和不能大于合同实际总金额，请重新输入！', function () {
                                $($(e.target)[0]).val('');
                                row.allocationMount = '';
                            });
                        }
                    }
                },
                formatter: function (value, row, index) {
                    var html = '<input type="text" class="form-control" value="' + (value || '') + '" id="allOcation-' + index + '" style="width: 200px;">';
                    return html;
                }
            },
            {title: '操作', field: 'couponDiscount', align: 'right', valign: 'middle', width: '120',
                formatter: function (value, row, index) {
                    var html = '<button type="button" class="btn btn-default btn-danger" onclick="removeRow(this, \'' + row.userId + '\')"><i class="mdi mdi-delete"></i>删除</button>';
                    return html;
                }
            },
        ],
        onPostBody: function (data) {
            console.log(data)
        },
    });
}

/**
 * 功能：初始化分公司列表
 * 接口：罗杰
 * */
function companiesList() {
    $.ajax({
        url: '/sysCompany/selectCompanies',
        type: 'GET',
        dataType: "json",
        success: (function (data) {
            if (data.code == "000000") {
                var dataList = data.data;
                var selectOption = '';
                for (let i = 0; i < dataList.length; i++) {
                    selectOption += '<option value="' + dataList[i].companyId + '">' + dataList[i].companyName + '</option>';
                }
                $('#companiesList').selectpicker('destroy');
                $('#companiesList').html(selectOption).selectpicker({
                    size: 10
                });
            }
        }),
        error: (function (res) {
            $.alert({
                title: '错误提醒',
                content: '分公司列表数据请求失败'
            });
        })
    })
}

/**
 * 功能：根据所选分公司初始化人员列表
 * */
function getAccountList(element) {
    $('#addCooperateBtn').prop('disabled', true);

    var companyId = $(element).val();
    $.ajax({
        // url: '/account/getAccountListByCompanyId',   // 未屏蔽自己
        url: '/account/getAccountByCompanyIdExcludeLoginPerson',    // 屏蔽自己
        type: 'GET',
        dataType: "json",
        data: {
            companyId
        },
        success: (function (data) {
            if (data.code == "000000") {
                var dataList = data.data;
                var selectOption = '';
                for (let i = 0; i < dataList.length; i++) {
                    selectOption += '<option value="' + dataList[i].accountId + '">' + dataList[i].userName + '</option>';
                }
                $('#accountList').selectpicker('destroy').html(selectOption).prop('disabled', false).selectpicker({
                    size: 10
                }).one('changed.bs.select', function (event, clickedIndex, isSelected, previousValue) {
                    $('#addCooperateBtn').prop('disabled', false);
                })
            }
        }),
        error: (function (res) {
            $.alert({
                title: '错误提醒',
                content: '分公司人员数据请求失败'
            });
        })
    });
}

/**
 * 功能：新增合作开发人员
 * */
function addCooperate() {
    var companyId = $('#companiesList').val();
    var userId = $('#accountList').val();
    var userName = $('#accountList option:selected').html();

    var rowData = {
        companyId,              // 分公司Id
        userId,                 // 合作开发人员Id
        userName,               // 合作开发人员姓名
        allocationMount: ''     // 分配额度
    };

    var tableData = $('#cooperateTable').bootstrapTable('getData', true);

    if (tableData.length == 0) {
        // 直接插入
        $('#cooperateTable').bootstrapTable('append', rowData);
    } else {
        var flag = true;
        for (let i = 0; i < tableData.length; i++) {
            if (tableData[i].userId == userId) {
                flag = false;
                break;
            }
        }
        if (flag) {
            // 无重复，直接插入
            $('#cooperateTable').bootstrapTable('append', rowData);
        } else {
            // 提示有重复
            promptInfo('列表中已存在该联系人，不能重复添加！');
        }
    }
}

/**
 * 功能：分配金额计算，总计不能大于合同实际总金额
 * */
function cooperateAmount(amount) {
    // 输入值
    var amount = Number(amount);
    // 合同实际总金额
    var total = Number($('#discountTotal').html());
    // 合作开发人员列表数据
    var tableData = $('#cooperateTable').bootstrapTable('getData', true);
    var tableDataTotal = 0;
    for (let i = 0; i < tableData.length; i++) {
        tableDataTotal += Number(tableData[i].allocationMount);
    }
    console.log('输入值：' + amount, '表格内已有值：' + tableDataTotal, '输入的总值：' + (amount + tableDataTotal), '合同实际金额：' + total);
    if (tableDataTotal + amount > total) {
        return false;
    } else {
        return true;
    }
}

/**
 * 功能：添加联系人弹窗table初始化
 * */
function addContactModal() {
    $('#contactListTable').bootstrapTable('destroy');
    $('#contactListTable').bootstrapTable({
        classes: 'table table-bordered table-hover table-striped',
        url: '/opportunity/contactByCustIdList',//请求地址
        method: 'post',//请求方式
        contentType: "application/x-www-form-urlencoded",//请求内容类型
        dataType: "json",                   // 数据类型
        striped: true,                      // 是否显示行间隔色
        sortable: true,                     // 是否启用排序
        sortOrder: "desc",                  // 排序方式
        sortName: 'createTm',               // 排序字段
        cache: false,                       // 是否使用缓存
        showColumns: false,                 // 显示隐藏列
        showRefresh: false,                 // 显示刷新按钮
        showToggle: false,                  // 切换显示样式
        showFooter: false,                  // 显示Table脚部
        pagination: true,                   // 是否显示分页
        showPaginationSwitch: false,        // 是否显示分页按钮
        clickToSelect: true,                // 是否启用点击选中行
        ignoreClickToSelectOn: ignoreClickToSelectOn,
        maintainSelected: true,             // 分页是否保留选中
        singleSelect: false,
        minimumCountColumns: 2,             // 最少要显示的列数
        undefinedText: '-',                  // cell没有值时显示
        sidePagination: "server",           // 分页方式：client客户端分页，server服务端分页
        // serverSort: true,
        uniqueId: 'opportunityProductId',
        idField: 'opportunityProductId',
        pageSize: 5,                        // 每页的记录行数
        pageNumber: 1,                      // 初始化加载第1页，默认第1页
        pageList: "[5, 10, 15, 20]",        // 可供选择的每页的行数

        queryParams: contactModalQueryParams,//查询参数
        columns: [
            {title: '联系人ID', field: 'contactId', visible: false},
            {checkbox: true, visible: true, width: 50},
            {title: '联系人姓名', field: 'contactName', align: 'left', valign: 'middle'},
            {title: '联系人职务', field: 'contactPosition', align: 'left', valign: 'middle'},
            {title: '联系方式', field: 'contactInformation', align: 'left', valign: 'middle'},
            {title: '联系人类型', field: 'contactType', align: 'left', valign: 'middle',
                events: {
                    'change input': function (e, value, row, index) {
                        var $element = $(e.target)
                        var $siblingsTr = $element.parents('tr').siblings('tr.selected');
                        row.contactType = $element.data('target');
                        if ($element.data('target') == 0) {
                            $siblingsTr.find('input[data-target="0"]').prop('checked', false);
                            $siblingsTr.find('input[data-target="1"]').prop('checked', true);
                        }
                    }
                },
                formatter: function (value, row, index, field) {
                    var html = '<label class="lyear-radio radio-inline radio-primary"><input type="radio" data-target="0" name="contactType' + index + '" disabled><span>首要</span></label>';
                    html += '<label class="lyear-radio radio-inline radio-primary"><input type="radio" data-target="1" name="contactType' + index + '" disabled><span>次要</span></label>';
                    return html;
                }
            },
        ],
        onCheck: function(row, element){
            $(element).parents('tr').find('input[type="radio"]').prop('disabled', false);
            $(element).parents('tr').find('input[data-target="1"]').prop('checked', true);
            row.contactType = '1';
        },
        onUncheck: function(row, element){
            $(element).parents('tr').find('input[type="radio"]').prop('checked', false);
            $(element).parents('tr').find('input[type="radio"]').prop('disabled', true);
            row.contactType = '';
        },
        onCheckAll: function (rowsAfter, rowsBefore) {
            // console.log(rowsAfter)
            $('#contactListTable tbody').find('input[type="radio"]').prop('disabled', false);
            $('#contactListTable tbody').find('input[data-target="1"]').prop('checked', true);
            $('#contactListTable tbody').find('input[data-target="1"]').trigger('change');
        },
        onUncheckAll: function (rowsAfter, rowsBefore) {
            $('#contactListTable tbody').find('input[type="radio"]').prop('disabled', true);
            $('#contactListTable tbody').find('input[type="radio"]').prop('checked', false);
        },
        responseHandler: function (result) {
            // console.log(result)
            if(result.code == "000000") {
                var obj = {
                    "rows": result.data,
                    "total": result.totalRecords//总条数
                };
            } else {
                var obj = {
                    "total": 0,
                    "rows": [],
                }
            }
            return obj;
        },
        onLoadSuccess: function (data) {
            // console.log(data)
        },
        onLoadError: function (status) {
            if (status == 403) {
                alert("权限不足！禁止访问！");
            } else {
                //加载失败时执行
                alert("加载失败！");
            }
        },
        formatLoadingMessage: function () {
            return "请稍等，加载中...";
        },
        formatNoMatches: function () {
            return '无符合条件的记录';
        },
    });
}

/**
 * 功能：获取url参数
 * */
function getRequest() {
    var url = location.search; // 获取url中"?"符后的字串
    var theRequest = new Object();
    if (url.indexOf("?") != -1) {
        var str = url.substr(1);
        strs = str.split("&");
        for(var i = 0; i < strs.length; i ++) {
            theRequest[strs[i].split("=")[0]]=decodeURI(strs[i].split("=")[1]);
        }
    }
    return theRequest;
}

// 合同弹窗数据显示
function addOpportunityContract() {
    var surchargeVal = $('#surcharge').val();
    var orderSurchargeRemark = $('#orderSurchargeRemark').val();
    if (surchargeVal > 0 && orderSurchargeRemark == '') {
        promptInfo('附加费用备注为必填项，请填写！', function () {
            setTimeout(function () {
                $('#orderSurchargeRemark').focus();
            }, 300);
        });
        return;
    }

    $('#contractGroup').hide(0);

    $('.approval').hide(0);
    var title = $('#addContractAction input:checked').next('span').html();
    $('#addOpportunityContractModal h4.title').html('创建' + title + '合同');
    $('#addOpportunityContractModal').modal('show');

    // 隐藏并重置合作开发人员内容
    hideCooperate();

    if ($('#addContractAction input[value="renewOrder"]').is(':checked')) {
        $('#contractGroup').show(0);
    }

    if ($('#discountAmount').html() > 0) {
        $('.approval').show(0);
    }

    // 创建合同弹窗 - 产品列表
    var productData = $('#productTable').bootstrapTable('getData', false);
    // console.log(productData);
    for (let i = 0; i < productData.length; i++) {
        // 判断产品列表是否包含会员产品，包含则需要审核
        if (productData[i].productCategories == 1) {
            $('.approval').show(0);
            break;
        }
    }
    $('#contractProductList').bootstrapTable('destroy');
    $('#contractProductList').bootstrapTable({
        class: 'table table-bordered table-hover table-striped',
        dataType: "json",                   // 数据类型
        // data: productData,

        url: '/opportunity/opportunityProductList',
        method: 'post',                     // 请求方式
        contentType: "application/x-www-form-urlencoded",// 请求内容类型

        striped: true,                      // 是否显示行间隔色
        sortable: true,                     // 是否启用排序
        sortOrder: "desc",                  // 排序方式
        sortName: 'createTm',               // 排序字段
        cache: false,                       // 是否使用缓存
        showColumns: false,                 // 显示隐藏列
        showRefresh: false,                 // 显示刷新按钮
        showToggle: false,                  // 切换显示样式
        showFooter: false,                  // 显示Table脚部
        showPaginationSwitch: false,        // 是否显示分页按钮
        clickToSelect: true,                // 是否启用点击选中行
        maintainSelected: false,            // 分页是否保留选中
        singleSelect: false,
        minimumCountColumns: 2,             // 最少要显示的列数
        undefinedText: '-',                 // cell没有值时显示
        uniqueId: 'opportunityProductId',
        // pagination: true,                   // 分页显示
        sidePagination: "server",           // 分页方式：client客户端分页，server服务端分页
        pageSize: 5,                        // 每页的记录行数
        pageNumber: 1,                      // 初始化加载第1页，默认第1页
        pageList: "[5, 20, 50]",            // 可供选择的每页的行数
        pagination: productData.length > 5 ? true : false,
        queryParams: productQueryParams,//查询参数
        columns: [
            {title: '主键', field: 'opportunityProductId', visible: false},
            {title: '产品名称', field: 'productName', align: 'left', valign: 'middle',},
            {title: '产品原价', field: 'productOriginalPrice', align: 'left', valign: 'middle',},
            {title: '产品单价', field: 'productUnitPrice', align: 'left', valign: 'middle',},
            {title: '产品会员价', field: 'productMemberPrice', align: 'left', valign: 'middle',},
            {title: '当前报价', field: 'productCurrentPrice', align: 'left', valign: 'middle', width: '160'},
            {title: '数量', field: 'productNumber', align: 'left', valign: 'middle', width: '160'},
        ],
        responseHandler: function (result) {
            if (result.code == "000000") {
                var obj = {
                    "rows": result.data,
                    "total": result.totalRecords//总条数
                };
            } else {
                var obj = {
                    "total": 0,
                    "rows": [],
                }
            }
            return obj;
        }
    });

    // 优惠券
    var couponData = $('#couponTable').bootstrapTable('getData', false);
    $('#contractCouponList').bootstrapTable('destroy');
    if (couponData.length) {
        var couponType = couponData[0].couponType;
        $('.modal-coupon-title, #contractCouponList').show(0);
        $('#contractCouponList').bootstrapTable({
            class: 'table table-bordered table-hover table-striped',
            dataType: "json",                   // 数据类型
            data: couponData,
            striped: true,                      // 是否显示行间隔色
            sortable: true,                     // 是否启用排序
            sortOrder: "desc",                  // 排序方式
            sortName: 'createTm',               // 排序字段
            cache: false,                       // 是否使用缓存
            showColumns: false,                 // 显示隐藏列
            showRefresh: false,                 // 显示刷新按钮
            showToggle: false,                  // 切换显示样式
            showFooter: false,                  // 显示Table脚部
            showPaginationSwitch: false,        // 是否显示分页按钮
            clickToSelect: true,                // 是否启用点击选中行
            maintainSelected: false,            // 分页是否保留选中
            singleSelect: false,
            minimumCountColumns: 2,             // 最少要显示的列数
            undefinedText: '-',                  // cell没有值时显示
            uniqueId: 'chsCustomerCouponId',
            pageSize: 5,                       // 每页的记录行数
            pageNumber: 1,                      // 初始化加载第1页，默认第1页
            pageList: "[10, 20, 30]",           // 可供选择的每页的行数
            pagination: couponData.length > 5 ? true : false,
            queryParams: productQueryParams,    // 查询参数
            columns: [
                {title: '主键', field: 'chsCustomerCouponId', visible: false},
                {title: '优惠券名称',field: 'couponName', align: 'left', valign: 'middle'},
                {title: '优惠券类型', field: 'couponType',align: 'left', valign: 'middle', formatter: couponFormat.couponType},
                {title: '优惠券额度', field: 'couponQuota',align: 'left', valign: 'middle',
                    formatter: function (value, row, index) {
                        return value == '0' ? undefined : value;
                    }
                },
                {title: '优惠券优惠折扣', field: 'couponDiscount',align: 'left', valign: 'middle',
                    formatter: function (value, row, index) {
                        return value == '0' ? undefined : value;
                    }
                },
            ],
            responseHandler: function (result) {
                // console.log(result)
                if (result.code == "000000") {
                    var obj = {
                        "rows": result.data,
                        "total": result.totalRecords//总条数
                    };
                } else {
                    var obj = {
                        "total": 0,
                        "rows": [],
                    }
                }
                return obj;
            },
            onPostBody: function (data) {

            },
        });
    } else {
        $('.modal-coupon-title, #contractCouponList').hide(0);
    }

    // 合同总金额
    var valuationTotal = $('#valuationTotal').val();
    // 报价总计
    var discountTotal = $('#discountTotal').text();
    // 报价优惠金额
    var discountAmount = $('#discountAmount').text();
    // 优惠券优惠金额
    var couponAmount = 0;
    if (couponData.length) {
        if (couponType == '1') {
            // 1-折扣类  折扣额度 = 报价总计 * 折扣
            couponAmount = discountTotal * (100 - couponData[0].couponDiscount * 100) / 100;
        } else {
            // 2-额度类 = 优惠额度
            for (let i = 0; i < couponData.length; i++) {
                couponAmount += couponData[i].couponQuota;
            }
        }
    }
    // 合同优惠总金额 = 报价优惠金额 + 优惠券优惠金额
    var totalDiscount = Number(discountAmount) + Number(couponAmount);

    $('#totalAmount').text(valuationTotal);
    $('#totalDiscount').text(totalDiscount);
    // 合同实际总金额 = 合同总金额 - 合同优惠总金额
    $('#realAmount').text(valuationTotal - totalDiscount);
    // 应收款 = 合同实际总金额 + 附加费用
    $('#receivables').text(valuationTotal - totalDiscount + Number($('#surcharge').val()));

    timeData('contractDate', 'contractDate', 'customerForm');

    $('#customerForm').bootstrapValidator({
        // excluded: [":disabled"],
        fields: {
            opportunityCustomerContract: {
                validators: {
                    notEmpty: {
                        message: '请选择续费期内的合同'
                    }
                }
            },
            contractDate: {
                validators: {
                    /*notEmpty: {
                        message: '合同起止日期不能为空'
                    },*/
                    callback: {
                        callback: function(value, validator) {
                            if (value) {
                                var dateArr = value.split(' 至 ');
                                var dateReg = /((([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29))/;
                                // 日期格式验证(至两侧空格不能省略)
                                if (dateArr[0].length > 10) {
                                    return {valid: false, message: '日期格式不正确，请选择正确的日期格式(YYYY-MM-DD 至 YYYY-MM-DD)'};
                                }
                                // 验证开始日期格式
                                if (!dateReg.test(dateArr[0])) {
                                    return {valid: false, message: '合同开始日期格式不正确，请选择或输入正确的日期格式(YYYY-MM-DD)'};
                                }
                                // 验证结束日期格式
                                if (!dateReg.test(dateArr[1])) {
                                    return {valid: false, message: '合同结束日期格式不正确，请选择或输入正确的日期格式(YYYY-MM-DD)'};
                                }
                                // 验证结束日期是否大于开始日期
                                if (moment(dateArr[1]).isBefore(dateArr[0])) {
                                    return {valid: false, message: '合同结束日期不能早于开始日期，请选择或输入正确的起止日期'};
                                }
                                return true;
                            } else {
                                return {valid: false, message: '合同起止日期不能为空'};
                            }
                        }
                    }
                }
            },
            paymentMethod: {
                validators: {
                    notEmpty: {
                        message: '支付方式不能为空'
                    }
                }
            },
        },

    })
}

/**
 * 上传图片
 * */
//uploadImg fileSelected
var $fileUpLoad=$("#contractImg")
function uploadImg(type) {
    if(type=='contractImg'){
        $fileUpLoad=$("#contractImg")
    }else{
        $fileUpLoad=$("#examineImgBox")
    }
    let fileToUpLoad=$fileUpLoad.prop('files')[0]
    // 取消时，清除input中保存的上传文件id
    if (!fileToUpLoad) {
        $fileUpLoad.prev('input').val('');
        return;
    }
    var formFile = new FormData();
    formFile.append("file", fileToUpLoad);
    var data = formFile;
    var imgId;
    $.ajax({
        url: '/file/uploadByOneFile',
        data: data,
        type: "POST",
        dataType: "json",
        async: false,
        cache: false,
        processData: false,
        contentType: false,
        success: function (data) {
            if (data.code == "000000") {
                $fileUpLoad.prev().val(data.data.fileId)
                // obj.next('input.image-id').val(data.data.fileId)

                imgId = data.data.fileId;
            } else {
            }
        },
        error: (function (res) {
            $.alert(res);
        })
    });
    return imgId;
}

// 创建合同
function addContract(element) {
    var $this = $(element);
    //定义合同id
    var contractId = "";
    var orderId = "";
    var contractStatus = "";
    var paymentStatus = "";
    var contractReviewStatus = "";


    // 合同类型
    // 1非会员合同
    // 2会员新单合同
    var contractType;
    switch ($('#addContractAction input:checked').val()) {
        case 'newOrder':
            contractType = 2;
            break;
        case 'renewOrder':
            contractType = 4;
            break;
        case 'nomemberOrder':
            contractType = 1;
            break;
    }

    //客户id
    var customerId = opportunityData.customerId;
    //客户名称
    var customerName = opportunityData.customerName;
    var customerType = opportunityData.customerType;
    //客户联系人id
    var contactId = opportunityData.contactId;
    //客户联系人名称
    var contactName = opportunityData.contactName;
    //联系方式
    var contactDetails = opportunityData.contactInformation;
    //客户邮箱
    var customerEmail = opportunityData.email;
    /*    //合同续费
        var contractRenewal = $('#contractRenewal').val();*/
    //会员主合同
    var masterMembershipContract;
    if (contractType == 4) {
        masterMembershipContract = $('#opportunityCustomerContract').val();
    }
    //合同起止日期
    var contractPeriodValidity = $("#contractDate").val().split('至');
    // 起止时间-开始时间
    var contractStartDate = $.trim(contractPeriodValidity[0]);
    // 起止时间-结束时间
    var contractEndDate = $.trim(contractPeriodValidity[1]);

    var contractOldStartDate = $('#opportunityCustomerContract option:selected').data('start');
    var contractOldEndDate = $('#opportunityCustomerContract option:selected').data('end');


    //回款日期
    var payBackDate = $('#collectionDate').val();
    //付款账号
    var paymentAccount = $('#paymentAccount').val();
    //支付方式
    var paymentMethod = $('#paymentMethod').val();
    //关联跟进记录
    var followRecordId = $('#followRecordList').val();
    //关联赢单商机
    var opportunityId = opportunityData.opportunityId;
    //合作开发人员
    var coDeveloperIdList = [];
    coDeveloperIdList = $('#cooperateInput').val().split(',');
    //是否申请电子合同
    // var applyElectronicContract = $("input[name='apply']:checked").val();
    //提前/延期原因
    /*    var advancePostponementReason = $('#advancePostponementReason').val();*/
    //是否保密
    var whetherKeepSecret = $("input[name='secrecy']:checked").val();

    //是否加盖公章
    var applyElectronicContract=$('input[name="applyElectronicContract"]:checked').val();

    //附加费用
    //金额
    var orderSurcharge = $('#surcharge').val();
    //备注
    var orderSurchargeRemark = $('#orderSurchargeRemark').val();

    //合同金额
    //合同总金额 = 会员产品会员价*数量 + 非会员产品原价*数量
    // var contractTotalAmount = $("#discountTotal").html();
    // var contractTotalAmount = 0;

    //合同优惠总金额
    var contractDiscountTotalAmount = $("#totalDiscount").html();

    //合同实际总金额 = 报价*数量
    var contractActualTotalAmount = $("#realAmount").html();
    //应收款 = 实际总金额 + 附加费用
    // var contractReceivables= Number(contractActualTotalAmount) + Number(orderSurcharge);
    var contractReceivables= $("#receivables").html();

    //合同附件
    var contractAnnexId = $('#contractPic').val();
    //合同审核
    var reviewAnnexId = $('#examinedPic').val();
    //审核备注
    var contractReviewNotes = $('#contractReviewNotes').val();
    //合作开发人员
    var coDeveloperList = $('#cooperateTable').bootstrapTable('getData', true);

    /*var tableJson = {};*/

    // 产品列表数据
    var productData = $('#contractProductList').bootstrapTable('getData', true); // 产品列表数据
    // console.log(productData,'productData');
    var categoriesFlag = false;
    var productArr = [];                                                            // 产品列表数组
    for (var i = 0; i < productData.length; i++) {
        var rowData = {
            productId: productData[i].customerProductId,                            // 产品id
            productName: productData[i].productName,                                // 产品名称
            productCategories: productData[i].productCategories,                    // 产品分类--0:非会员;1:会员；
            productOriginalPrice: productData[i].productOriginalPrice,              // 原价
            productUnitPrice: productData[i].productUnitPrice,                      // 单价
            productMemberPrice: productData[i].productMemberPrice,                  // 会员价
            productFinalPrice: productData[i].productCurrentPrice,                  // 当前报价
            productTotalPrice: productData[i].productTotalPrice || '0',             // 总计价格
            productQuantity: productData[i].productNumber,                          // 数量
            productCode:productData[i].productCode,                                 // 产品编码
            // productCode:productData[i].whetherRenew = 0
        }
        productArr.push(rowData);
        // 判断产品列表是否包含会员产品，包含则需要审核
        // console.log(productData[i].productCategories);
        if (productData[i].productCategories == 1) {
            categoriesFlag = true;
        }
        // 计算合同总金额
        /*if (productData[i].productCategories == 0) {
            // 非会员产品按原价计算总金额
            contractTotalAmount += productData[i].productOriginalPrice * productData[i].productNumber;
        } else {
            // 会员产品按会员价计算总金额
            contractTotalAmount += productData[i].productMemberPrice * productData[i].productNumber;
        }*/
    }

    // 优惠券数据
    var couponTableData = $('#couponTable').bootstrapTable('getData', true);
    var couponData = [];
    if (couponTableData.length) {
        for (let i = 0; i < couponTableData.length; i++) {
            var couponList = {};
            couponList.chsCustomerCouponId = couponTableData[i].chsCustomerCouponId;
            couponList.receiveCouponId = couponTableData[i].receiveCouponId;
            couponList.couponName = couponTableData[i].couponName;
            couponList.couponType = couponTableData[i].couponType;
            couponList.couponQuota = couponTableData[i].couponQuota;
            couponList.couponDiscount = couponTableData[i].couponDiscount;
            couponData.push(couponList);
        }
    } else {
        couponData = null;
    }

    // 验证表单
    var bootstrapValidator = $("#customerForm").data('bootstrapValidator');
    bootstrapValidator.validate();
    if (!bootstrapValidator.isValid()) {
        console.log('请输入必填信息');
        return;
    }
    /*$("#customerForm").bootstrapValidator('validate');//提交验证
    if (!$("#customerForm").data('bootstrapValidator').isValid()) {//获取验证结果，如果成功，执行下面代码
        return;
    }*/

    // 合同附件判空提示
    /*if (!contractAnnexId) {
        // 上传合同附件
        var contractFile = $('#contractImg');
        // 合同附件不为空上传图片并返回图片id
        if (contractFile.val()) {
            //contractFile
            contractAnnexId = uploadImg('contractImg');
        } else {
            promptInfo("合同附件为必填项");
            // 提交时，禁用提交按钮

            return;
        }
    }*/

    // 上传审核图片
    var examineFile = $('#examineImgBox');
    // 合同优惠时，必须上传审核图片
    /*if(contractDiscountTotalAmount != 0 && !$('#examinedPic').val() || categoriesFlag){
        if (examineFile.val()) {
            //examineFile examineImgBox
            uploadImg('examineImgBox');
        } else {
            promptInfo("审核图片为必填项，请添加图片!");
            return;
        }
    }*/
    /*if((contractDiscountTotalAmount != 0 || categoriesFlag) && !contractReviewNotes){
        promptInfo("审核备注必填!");
        return;
    }*/
    // 审核附件判空提示
    /*if(contractDiscountTotalAmount!=0&&!reviewAnnexId){
        promptInfo("审核附件必须上传!");
        return;
    }

    //审核备注判空提示
    if(contractDiscountTotalAmount!=0&&!contractReviewNotes){
        promptInfo("审核备注必填!");
        return;
    }*/

    // 验证合作开发人员分配金额
    for (let i = 0; i < coDeveloperList.length; i++) {
        if (coDeveloperList[i].allocationMount == '') {
            $.alert({
                title: '温馨提示',
                content: '合作开发人员分配金额不能为空，请输入！',
                scrollToPreviousElement: false,
                scrollToPreviousElementAnimate: false,
                buttons: {
                    confirm: {
                        text: '确认',
                        btnClass: 'btn-primary',
                        action: function () {
                            // e.preventDefault();
                            $('#allOcation-' + i).focus();
                            return;
                        }
                    }
                }
            });
            return;
        }
    }


    var jsonData = {
        "contractId":contractId,
        "orderId":orderId,
        "contractType":contractType,
        "customerId":customerId,
        "customerName":customerName,
        "customerType":customerType,
        "contactId":contactId,
        "contactName":contactName,
        "contactDetails":contactDetails,
        "customerEmail":customerEmail,
        //"contractRenewal":contractRenewal,
        "masterMembershipContract":masterMembershipContract,
        "contractNewStartDate":contractStartDate,
        "contractNewEndDate":contractEndDate,

        "contractOldStartDate":contractOldStartDate,
        "contractOldEndDate":contractOldEndDate,

        // "payBackDate":payBackDate,//日期回款
        "paymentAccount":paymentAccount,
        "paymentMethod":paymentMethod,
        "followRecordId":followRecordId,
        "opportunityId":opportunityId,
        // "coDeveloperIdList":coDeveloperIdList,
        "applyElectronicContract":applyElectronicContract, //是否加盖公章
        //"advancePostponementReason":advancePostponementReason,
        // "whetherKeepSecret":whetherKeepSecret, //保密
        "contractStatus":contractStatus,
        "paymentStatus":paymentStatus,
        "contractReviewStatus":contractReviewStatus,
        //附加费用
        "orderSurcharge":orderSurcharge,
        "orderSurchargeRemark":orderSurchargeRemark,
        //合同总金额
        "contractTotalAmount": $('#totalAmount').text(),
        "contractDiscountTotalAmount":contractDiscountTotalAmount,
        "contractActualTotalAmount":contractActualTotalAmount,
        "contractReceivables":contractReceivables,
        "contractAnnexId":contractAnnexId,
        "reviewAnnexId":reviewAnnexId,
        "contractReviewNotes":contractReviewNotes,
        //产品、活动、赠品活动参数
        "customerContractProductAddQOList": productArr,
        // 优惠券
        "contractCouponQOList": couponData,
        // "customerActivityProductAddQOList": productActivityArr,
        // "customerGiftActivityProductAddQOList": giftArr
        "contractCategory": 1,
        // 合作开发人员
        "coDeveloperList":coDeveloperList,
    };

    console.log(jsonData);

    $this.prop('disabled', true).addClass('btn-label').html('<label><i class="mdi mdi-loading mdi-spin"></i></label>创建中...');

    $.ajax({
        url: '/customerContract/addContractInformation',
        type: 'POST',
        dataType: "json",
        contentType: "application/json;charset=utf-8",
        data: JSON.stringify(jsonData),
        success: (function (data) {
            if(data.code == '000000'){
                console.log('提交成功');
                $('#addOpportunityContractModal').modal('hide');

                $.ajax({
                    url: '/opportunity/updateOpportunityById',
                    type: 'POST',
                    dataType: "json",
                    contentType: "application/json;charset=utf-8",
                    data: JSON.stringify({
                        opportunityId
                    }),
                    success: (function (data) {
                        if (data.code == '000000') {
                            console.log('成功')
                            $('#followFormBox, #productTableToolbar, #chargesBox, #contacts .toolbar .btn').hide(0);
                            $('#cooperateInput').prop('disabled', true);
                            $('#contactList').bootstrapTable('hideColumn', 'abolishState');
                            $('#productTable').bootstrapTable('hideColumn', 'productOperation');
                        }
                    })
                })

            } else if(data.code == 'CV0001'){
                //合同不能编辑
                $.alert(data.message);
            } else if(data.code == 'CV0002'){
                //没有会员产品合同不能保存
                $.alert(data.message);
            } else if(data.code == 'CV0003'){
                //余额不足,合同不能保存
                $.alert(data.message);
            }else {
                $.alert("保存失败");
            }
        }),
        error: (function (res) {
            $.alert("保存失败");
        }),
        complete: function () {
            $this.prop('disabled', false).removeClass('btn-label').html('创建合同');
        }
    })
}

/**
 * 功能：添加产品数据到商机产品表格
 * */
function addProductRow() {
    var modal = $('#addProductModal');
    // 会员产品选中数据
    var memberSelectArr = $('#memberProductListTable').bootstrapTable("getServerSelected",true);
    // 非会员产品选中数据
    var nomemberSelectArr = $('#nomemberProductListTable').bootstrapTable("getServerSelected",true);

    // 判断是否选择数据，未选择数据直接关闭弹窗
    if (memberSelectArr.length == 0 && nomemberSelectArr.length == 0) {
        modal.modal('hide');
        return;
    }

    // 选中数据集合
    var selectRowData = [];

    // 格式化会员产品数据
    for (var i in memberSelectArr) {
        var newMemberSelectData = {};
        newMemberSelectData.customerProductId = memberSelectArr[i].memberProductId;        // 产品ID
        newMemberSelectData.productCode = memberSelectArr[i].memberProductCode;            // 产品编码
        newMemberSelectData.productName = memberSelectArr[i].memberCardName;               // 产品名称
        newMemberSelectData.productCategories = 1;                                         // 产品类别 1-会员
        newMemberSelectData.productOriginalPrice = '';                                     // 产品原价
        newMemberSelectData.productUnitPrice = '';                                         // 产品单价
        newMemberSelectData.productMemberPrice = memberSelectArr[i].sellingCardPrice;      // 产品会员价
        newMemberSelectData.productDiscountPrice = memberSelectArr[i].sellingCardPrice;    // 当前报价
        newMemberSelectData.productNumber = 1;                                             // 数量
        newMemberSelectData.chose = '';                                                    // 选择的价格类型
        newMemberSelectData.whetherRenew = memberSelectArr[i].whetherRenew;
        selectRowData.push(newMemberSelectData);
    }

    // 格式化非会员产品数据
    for (var i in nomemberSelectArr) {
        var newNomemberSelectData = {};
        newNomemberSelectData.customerProductId = nomemberSelectArr[i].customerProductId;           // 产品ID
        newNomemberSelectData.productCode = nomemberSelectArr[i].productCode;                       // 产品编码
        newNomemberSelectData.productName = nomemberSelectArr[i].productName;                       // 产品名称
        newNomemberSelectData.productCategories = 0;                                                // 产品类别 0-非会员
        newNomemberSelectData.productOriginalPrice = nomemberSelectArr[i].productOriginalPrice;     // 产品原价
        newNomemberSelectData.productUnitPrice = nomemberSelectArr[i].productUnitPrice;             // 产品单价
        newNomemberSelectData.productMemberPrice = nomemberSelectArr[i].productMemberPrice;         // 产品会员价
        newNomemberSelectData.productDiscountPrice = nomemberSelectArr[i].productOriginalPrice;     // 当前报价
        newNomemberSelectData.productNumber = 1;                                                    // 数量
        newNomemberSelectData.chose = 0;                                                            // 选择的价格类型
        selectRowData.push(newNomemberSelectData);
    }

    console.log('添加到商机产品表的数据：', selectRowData);

    // 商机产品表格对象
    var $targetTable = $('#productTable');

    var alreadyProduct = '';
    for (var i = 0; i < selectRowData.length; i++) {
        var data = {
            "chose": selectRowData[i].chose,                                   // 价格选择标签
            "productName": selectRowData[i].productName,                       // 产品名称
            "productCategories": selectRowData[i].productCategories,           // 产品分类：0-非会员；1-会员；
            "productOriginalPrice": selectRowData[i].productOriginalPrice,     // 产品原价
            "productUnitPrice": selectRowData[i].productUnitPrice,             // 产品单价
            "productMemberPrice": selectRowData[i].productMemberPrice,         // 产品会员价
            "productCurrentPrice": selectRowData[i].productDiscountPrice,      // 当前报价
            "productNumber": selectRowData[i].productNumber,                   // 产品数量
            "customerProductId": selectRowData[i].customerProductId,           // 产品数量
            "opportunityId": opportunityId,                                    // 商机id
            "productCode": selectRowData[i].productCode,                       // 产品编号
        };
        if (selectRowData[i].productCategories == 1) {
            data.whetherRenew = selectRowData[i].whetherRenew;
        }
        console.log('提交的数据：', data);
        $.ajax({
            url: '/opportunity/addOpportunityProduct',
            contentType: "application/json;charset=UTF-8",
            type: 'POST',
            dataType: "json",
            async: false,
            data: JSON.stringify(data),
            success: function (data) {
                if (data.code == "000000") {
                    $('#addProductModal').modal('hide');
                    $('#productTable').bootstrapTable('refresh');
                    $('#addProductBtn').removeClass('disabled');

                    // 删除产品时，重置创建合同选中状态
                    $('#addContractAction input').prop('checked', false);
                    $('#addContractAction button').prop('disabled', true);
                } else if (data.code == 'EX0001') {
                    // $.alert('产品:' + JSON.parse(this.data).productName + '已存在于产品列表中,不能重复添加!');
                    alreadyProduct += '<p><span class="label label-info">' + JSON.parse(this.data).productName + '</span></p>';
                }
            },
            error: function (err) {
                console.log(err);
            }
        })
    }
    alreadyProduct !== '' && promptInfo('<h5>下列产品已存在于产品列表中：</h5>' + alreadyProduct);
    $('#addProductModal').modal('hide');
    $('#addProductModal').on('hidden.bs.modal', function () {
        $('#addProductBtn').removeClass('disabled');
    });
    modal.modal('hide');
}

/**
 * 功能：添加产品
 * */
function addProduct(originalTableId, targetTableId) {
    $('#addProductBtn').addClass('disabled');

    var $originalTable = $('#' + originalTableId);
    var selectRowData = $originalTable.bootstrapTable('getSelections');

    if (selectRowData.length == 0) {
        // 弹窗表格未选择时直接关闭弹窗
        $originalTable.parents('.modal').modal('hide');
        $('#addProductBtn').removeClass('disabled');
        return;
    }

    var alreadyProduct = '';
    for (var i = 0; i < selectRowData.length; i++) {
        if (selectRowData[i].productDiscountPrice == '') {
            promptInfo('所选产品当前报价不能为空！');
            $('#addProductBtn').removeClass('disabled');
            return;
        }

        // console.log('不存在');
        var choseType;
        selectRowData[i].chose == null ? choseType = 1 : choseType = selectRowData[i].chose;
        var data = {
            "chose": choseType,                                                // 价格选择标签
            "productName": selectRowData[i].productName,                       // 产品名称
            "productCategories": selectRowData[i].productCategories,           // 产品分类：0-非会员；1-会员；
            "productOriginalPrice": selectRowData[i].productOriginalPrice,     // 产品原价
            "productUnitPrice": selectRowData[i].productUnitPrice,             // 产品单价
            "productMemberPrice": selectRowData[i].productMemberPrice,         // 产品会员价
            "productCurrentPrice": selectRowData[i].productDiscountPrice,      // 当前报价
            "productNumber": selectRowData[i].productNumber,                   // 产品数量
            "opportunityId": opportunityId,                                    // 商机id
            "productCode": selectRowData[i].productCode,                       // 产品编号
        };
        // console.log(data);
        $.ajax({
            url: '/opportunity/addOpportunityProduct',
            contentType: "application/json;charset=UTF-8",
            type: 'POST',
            dataType: "json",
            async: false,
            data: JSON.stringify(data),
            success: function (data) {
                if (data.code == "000000") {
                    $('#addProductModal').modal('hide');
                    $('#productTable').bootstrapTable('refresh');
                    $('#addProductBtn').removeClass('disabled');
                } else if (data.code == 'EX0001') {
                    // $.alert('产品:' + JSON.parse(this.data).productName + '已存在于产品列表中,不能重复添加!');
                    alreadyProduct += '<p><span class="label label-info">' + JSON.parse(this.data).productName + '</span></p>';
                }
            },
            error: function (err) {
                console.log(err);
            }
        })
    }
    alreadyProduct !== '' && promptInfo('<h5>下列产品已存在于产品列表中：</h5>' + alreadyProduct);
    $('#addProductModal').modal('hide');
    $('#addProductModal').on('hidden.bs.modal', function () {
        $('#addProductBtn').removeClass('disabled');
    });
}

/**
 * 功能：table表格联系电话中间四位星号替换，添加电话按钮
 * */
function contactFormat(value, row, index, field) {
    // console.log(value, row, index, field);
    // 手机号码中间四位替换为 *
    var contact = transTelNumber(value);
    var telBtn = '';
    // return contact + telBtn;
    // 判断是否有联系方式
    if (contact) {
        if (row.abolishState == '1') {
            telBtn = '<button class="tel-button" onclick="callCenter(this);"><i class="mdi mdi-phone"></i></button>';
        }
        return contact + telBtn;
    } else {
        return;
    }
}

/**
 * 功能: 呼出拨号窗口
 * 参数: customerId-客户id contactData-联系人相关数据([{}]数组形式传递)
 * */
function callCenter(element) {
    var rowData = {};
    if (element) {
        var rowUniqueId = $(element).parents('tr').data('uniqueid');
        var $table = $(element).parents('table');
        rowData = $table.bootstrapTable('getRowByUniqueId', rowUniqueId);
    }

    var data = [{
        contactId: rowData.contactId || opportunityData.contactId,
        contactName: rowData.contactName || opportunityData.contactName,
        contactDetails: [rowData.contactInformation || opportunityData.contactInformation]
    }];  // 需要传递给电话弹窗的相关数据

    window.parent.callModal(customerId, data, 5);
}

/**
* 功能：屏蔽表格行内input、checkbox对单击选中行的影响
* */
function ignoreClickToSelectOn(e) {
    // console.log(e.tagName);
    return ['INPUT', 'LABEL', 'SPAN'].indexOf(e.tagName) > -1;
}

/**
 * 功能：获取常用语列表
 * */
function phrase() {
    var phraseArr;
    function getPhrase() {
        $.ajax({
            url: '/opportunity/phraseList',
            async: false,
            type: "post",
            dataType: "json",
            success: function (data) {
                if (data.code == '000000') {
                    phraseArr = data.data;
                    // console.log(phraseArr);
                } else {
                    promptInfo(data.message);
                }
            },
            error: function () {
                promptInfo('获取常用语列表失败，请重试！');
            }
        });
    }
    getPhrase();
    // 常用语下拉菜单
    $('#phraseDropDown').on('show.bs.dropdown', function () {
        // 获取常用语列表
        getPhrase();

        var html = '';
        for (var i = 0; i < phraseArr.length; i++) {
            html += '<li><a href="JavaScript:void(0);">' + phraseArr[i].phraseName + '</a></li>';
        }
        html += '<li role="separator" class="divider"></li>';
        html += '<li><a href="#!" data-toggle="modal" data-target="#phraseSetModal"><i class="mdi mdi-settings"></i>管理</a></li>';
        $('#phrase').next('ul.dropdown-menu').html(html);
    }).on('click', 'li > a:not([data-toggle="modal"])', function () {
        $('#followForm textarea').val($(this).html());
    });
    // 常用语编辑弹窗
    $('#phraseSetModal').on('show.bs.modal', function () {
        // getPhrase();
        // console.log(phraseArr);
        var html = '';
        for (var i = 0; i < phraseArr.length; i++) {
            html += '<li class="dd-item" data-id=""><div class="dd-handle mdi mdi-drag"></div>';
            html += '<input type="text" class="form-control" placeholder="请输入常用语" value="' + phraseArr[i].phraseName + '">';
            html += '<button type="button" class="btn btn-danger"><i class="mdi mdi-delete"></i></button></li>';
        }
        $(this).find('.dd-list').html(html);
    });
    // 新增一条常用语
    $('#addOnePhrase').on('click', function () {
        var itemLength = $('.dd-list').find('li').length;
        if (itemLength < 10) {
            var html = '<li class="dd-item"><div class="dd-handle mdi mdi-drag"></div>' +
                '<input type="text" class="form-control" placeholder="请输入常用语" value="">' +
                '<button type="button" class="btn btn-danger"><i class="mdi mdi-delete"></i></button></li>';
            $('.dd-list').append(html);
        } else {
            promptInfo('最多添加十条常用语！');
        }
    });
    $(document).on('click', '.dd-item button.btn-danger', function () {
        $(this).parents('li').remove();
    });
    // 提交编辑常用语
    $('#editPhrase').on('click', function () {
        var newArr = [];
        for (var i = 0; i < $('.dd-list li').length; i++) {
            var listVal = $('.dd-list li').eq(i).find('input').val();
            newArr[i] = listVal;
            if (listVal == '') {
                $.alert({
                    title: '提示信息',
                    content: '常用语不能为空，请输入内容！',
                    buttons: {
                        confirm: {
                            text: '确认',
                            btnClass: 'btn-primary',
                            action: function(){
                                setTimeout(function () {
                                    $('.dd-list li').eq(i).find('input').focus();
                                }, 300);
                            }
                        }
                    }
                });
                return;
            }
        }
        $.ajax({
            url: '/opportunity/addPhraseList',
            async: false,
            type: "post",
            dataType: "json",
            contentType: "application/json;charset=utf-8",
            data: JSON.stringify(newArr),
            success: function (data) {
                if (data.code == '000000') {
                    $('#phraseSetModal').modal('hide');
                }
            }
        })
    });
    // 拖动排序
    $('#dragBox').nestable({
        maxDepth: 1,                        // 树节点层次(默认5)
        group: 0,                           // 允许在列表之间拖动的组ID(默认0)
        beforeDragStop: function(l,e){
            // l is the main container
            // e is the element that was moved
            console.log(l, e)
        }
    });
}

/**
 * 功能：商机状态切换
 * */
function wizardStatus() {
    var defaultStatus = $('.wizard li.active').index() + 1;
    var opportunityStatus;
    $('.wizard li.active').prevAll().addClass('success');
    if ($('.wizard li.active').index() > 4) {
        $('.wizard li.active').siblings().addClass('disabled');
    }
    $('.wizard').on('click', 'a', function () {
        var $this = $(this);
        var index = $(this).parent('li').index();
        var thisLI = $(this).parent();
        var text = $(this).next('span').html();

        if (index == 5 || index == 6) {
            $.alert({
                title: '确定要修改状态为 ' + text + ' 吗？',
                content: '商机状态修改为 赢单 或 输单之后，将不能再做修改。',
                buttons: {
                    confirm: {
                        text: '确认',
                        btnClass: 'btn-primary',
                        action: function () {
                            statusAction();
                        }
                    },
                    cancel: {
                        text: '取消',
                        action: function () {
                            return;
                        }
                    }
                }
            });
            return;
        }
        function statusAction() {
            if (thisLI.hasClass('disabled')) {
                var status = $('.wizard li:not(.disabled) span').html();
                // console.log(status);
                promptInfo('商机已' + status + '，不可更改状态！');
                return;
            } else {
                thisLI.addClass('active').siblings().removeClass('active');
                thisLI.removeClass('success');
                thisLI.prevAll('li').addClass('success');
                thisLI.nextAll('li').removeClass('success');
                if (index > 4) {
                    thisLI.siblings().addClass('disabled');
                }
            }
            opportunityStatus = $($this).parent().index() + 1;

            // console.log(defaultStatus, opportunityStatus);
            // console.log(opportunityStatus != defaultStatus, opportunityStatus != undefined);

            if (opportunityStatus != defaultStatus && opportunityStatus != undefined) {
                var date = new Date();
                var createTm = date.getTime();  // 跟进时间
                var data = {
                    opportunityStatus,
                    createTm
                };
                trends(1, data, function () {
                    // console.log(data);
                    lightyear.notify('状态修改成功！', 'success', 3000, 'mdi mdi-emoticon-happy', 'top', 'right');
                    // 重置初始状态
                    defaultStatus = opportunityStatus;
                })
            }
        }
        statusAction();
    });
}

/**
 * 功能：协作人员操作
 * */
function cooperate() {
    // 初始化添加协作人插件
    function cooperateInput(data) {
        var nameDate = new Bloodhound({
            datumTokenizer: Bloodhound.tokenizers.obj.whitespace('userName'),
            queryTokenizer: Bloodhound.tokenizers.whitespace,
            local: data
        });
        nameDate.initialize();

        $('#cooperateInput').tagsinput({
            itemValue: 'accountId',     // 控制台返回参数
            itemText: 'userName',       // 标签显示内容
            typeaheadjs: {
                displayKey: function (item) {     // 控制台返回参数
                    return item.userName + ' — ' + (item.contactInformation || '暂无联系方式');
                },
                source: nameDate.ttAdapter()
            }
        });
    }

    // 获取全部开发人员名单
    // console.log('获取开发人员列表执行！');
    $.ajax({
        url: '/opportunity/userList',
        type: 'post',
        dataType: "json",
        async: false,
        data: {
            opportunityId
        },
        success: function (data) {
            if (data.code == "000000") {
                // console.log(data);
                var listData = data.data;
                // console.log('全部协作开发人员列表：', listData);
                // 执行初始化
                cooperateInput(listData);
            } else {
                promptInfo(data.message);
            }
        },
        error: function () {
            promptInfo('获取全部开发人员名单失败，请重试！');
        }
    });

    // 回显协作开发人员列表
    function reverse () {
        // console.log('回显开发人员列表执行！');
        $.ajax({
            url: '/opportunity/opportunityCollaboratorList',        // 当前商机协作人
            type: 'post',
            dataType: 'json',
            async: false,
            data: {
                opportunityId
            },
            success: function (data) {
                if (data.code = '00000') {
                    // console.log('回显协作开发人员列表成功', data.data);
                    for (var i = 0; i < data.data.length; i++) {
                        $('#cooperateInput').tagsinput('add', data.data[i]);
                    }
                } else {
                    promptInfo(data.message);
                }
            },
            error: function () {
                promptInfo('协作人获取失败！')
            }
        })
    };
    reverse();

    // 添加、删除商机协作人
    $('#cooperateInput').on('itemAdded', function (event) {
        // console.log('添加操作执行', event.item);
        var jsonData = {
            accountId: event.item.accountId,                            // 用户id
            userName: event.item.userName,                              // 用户名
            companyName: event.item.companyName || '',                  // 公司名称
            contactInformation: event.item.contactInformation || '',    // 联系方式
            opportunityId                                               // 商机id
        };
        $.ajax({
            url: '/opportunity/addOpportunityCollaborator',
            type: 'post',
            dataType: "json",
            async: false,
            contentType: "application/json;charset=utf-8",
            data: JSON.stringify(jsonData),
            success: function (data) {
                if (data.code == "000000") {
                    console.log('添加协作联系人成功！');
                } else {
                    promptInfo(data.message);
                }
            },
            error: function () {
                promptInfo('添加商机协作人失败，请重试！');
            }
        });
    }).on('beforeItemRemove', function(event) {
        // console.log('删除协作人操作执行！', event.item);
        $.ajax({
            url: '/opportunity/deleteOpportunityCollaborator',
            type: 'post',
            dataType: "json",
            async: false,
            data: {
                opportunityCollaboratorId: event.item.opportunityCollaboratorId
            },
            success: function (data) {
                if (data.code == "000000") {
                    console.log('删除协作人成功！');
                } else {
                    promptInfo(data.message);
                }
            },
            error: function () {
                promptInfo('删除商机协作人失败，请重试！');
                reverse();
            }
        });
    });
}

/**
 * 功能：写跟进获取联系人
 * */
var contactArr; // 联系人数组
function getContact() {
    $.ajax({
        type: 'POST',
        dataType: "json",
        url: '/opportunity/contactByCustomerIdList',
        data:{
            customerId
        },
        async : true,
        success: (function (data) {
            if (data.code == "000000") {
                contactArr = data.data;
                // console.log(contactArr);
            } else {
                alert("请求失败");
            }
        }),
        error: (function (res) {
            alert("请求失败");
        })
    });
}
function contactList(data) {
    if (data.length == 0) {
        $("#followContactList").html('<li><a href="javascript:void(0);">无此联系人，可添直接加为新联系人</a></li>');
        // $('#followContactId').val('');
    } else {
        var html = '';
        for (var i = 0; i < data.length; i++) {
            html += '<li><a href="javascript:void(0);" class="name-item" onclick="getTel(\'' + data[i].contactName + '\',\'' + data[i].contactInformation + '\',\'' + data[i].contactId + '\')">' + data[i].contactName + '</a></li>';
        }
        $("#followContactList").html(html);
    }
}
function changeName(_this) {
    var text = $.trim($(_this).val());
    if (text == '') {
        contactList(contactArr);
    }
    $("#followContactList").slideDown(160);

    // 点击输入框和下拉菜单以外范围，关闭提示下拉菜单
    $(document).click(function (e) {
        var con = $(_this).parents('.pull-left');
        if (!con.is(e.target) && con.has(e.target).length === 0) {
            $("#followContactList").slideUp(160);
        }
    })
}
function getTel(name, phone, id) {
    $("#followContact").val(name);
    $("#followPhone").val(phone);
    $("#followContactId").val(id);
    $("#followContactList").slideUp(160);
}
function contactFilter(e) {
    $('#followContactId').val('');
    var text = $.trim($(this).val());
    var filterContactArr = [];
    for (var i = 0; i < contactArr.length; i++) {
        if (contactArr[i].contactName.indexOf(text) != -1) {
            filterContactArr.push(contactArr[i]);
        }
    }
    contactList(filterContactArr);
}

/**
 * 功能：发布跟进信息
 * */
function publish(_this) {
    var $this = _this;
    var date = new Date();
    var followTm        = date.getTime();                               // 跟进时间
    var followWay       = $('#followMode').val();                       // 跟进方式-value
    var customerIntention   = $('#customerIntention').val();            // 成交意向
    var estimatedSigningTime   = $('#estimatedTime').val();             // 预计签单时间
    var followWayText   = $('#followMode option:selected').text();      // 跟进方式-文字
    var followContactId = $('#followContactId').val() || '';            // 联系人id
    var followContact   = $('#followContact').val();                    // 联系人姓名
    var followPhone     = $('#followPhone').val();                      // 联系人电话
    var followDetail    = $('#followContent').val();                    // 跟进详情
    var opportunityStatus = $('.wizard li.active').index() + 1;         // 商机状态

    if (followWayText == '') {
        promptInfo('跟进方式不能为空，请选择！');
        return;
    }
    if (customerIntention == '') {
        promptInfo('请填写成交意向！');
        return;
    }
    if (followContact == '') {
        promptInfo('联系人姓名不能为空，请添加联系人！');
        return;
    }

    // var contactInformationReg = /^1[3|4|5|7|8][0-9]{9}$/; // 非负整数
    var contactInformationReg = /^([0-9-\s]+)$/;
    var contactInformationPattern = new RegExp(contactInformationReg);
    if(!followPhone){
        promptInfo("联系人电话不能为空，请添加联系人电话！");
        return;
    }else{
        if(!contactInformationPattern.test(followPhone)) {
            promptInfo("手机号码格式不正确，请重新输入！");
            return;
        }
    }
    /*if (followPhone == '') {
        promptInfo('联系人电话不能为空，请添加联系人电话！');
        return;
    }*/
    if (followDetail == '') {
        promptInfo('跟进详情不能为空，请添加跟进详情！');
        return;
    }

    var data = {
        followWay,
        customerIntention,
        estimatedSigningTime,
        followContactId,
        followContact,
        followPhone,
        followDetail,
        followTm,
        createTm: followTm,
        opportunityStatus
    }
    // console.log(data);
    $($this).addClass('loading').attr('disabled', true);
    trends(0, data, function () {
        $($this).removeClass('loading').attr('disabled', false);
        $('#followForm input, #followForm textarea').val('');
        $('#followMode').val('').selectpicker('refresh');
        $('#customerIntention').val(customerIntention);
    });
}

/**
 * 商机动态提交、回显
 * @参数：type-新增状态的操作方式：0 - 跟进动态， 1 - 修改商机状态
 * */
function trends(type, data, callback) {
    var jsonData = {
        operationMode: type,                                                // 操作方式 0-跟进 1-修改商机状态
        opportunityId,                                                      // 商机表id
        customerId,                                                         // 客户id
        contactId: data.followContactId,                                    // 联系人id
        contactName: data.followContact,                                    // 联系人名称
        contactInformation: data.followPhone,                               // 联系方式
        createTm: data.createTm,                                            // 创建时间
        opportunityStatus: data.opportunityStatus                           // 商机状态
    };
    if (type) {
        // jsonData.opportunityStatus = data.opportunityStatus;                // 商机状态
    } else {
        jsonData.followTm       = data.followTm;                            // 跟进时间
        jsonData.followWay      = data.followWay;                           // 跟进方式
        jsonData.customerIntention  = data.customerIntention;               // 成交意向
        jsonData.estimatedSigningTime  = data.estimatedSigningTime;         // 预计签单时间
        jsonData.followDetail   = data.followDetail;                        // 跟进详情
    }

    console.log(jsonData);

    $.ajax({
        url: '/opportunity/addOpportunityDynamic',
        type: 'post',
        dataType: 'json',
        contentType: "application/json;charset=UTF-8",
        async: true,
        data: JSON.stringify(jsonData),
        success: function (data) {
            if (data.code == '000000') {
                // 删除无记录提示
                $('#followList p.nodata').remove();

                jsonData.accessUrl = data.data[0].accessUrl;
                jsonData.userName = operatorName;
                addTrends(type, jsonData);
                if (jsonData.contactId == '') {
                    console.log('联系人id为空时，新增联系人之后重新调用联系人接口，更新联系人列表');
                    getContact();
                }
                callback && callback();
            } else {
                promptInfo(data.message);
                $('#publishBtn').removeClass('loading').attr('disabled', false);
            }
        },
        error: function (message) {
            promptInfo(message);
        }
    })
}
function addTrends(type, data, speed) {
    var nSpeed;
    speed == 0 ? nSpeed = 0 : nSpeed = speed || 240;
    var html = '',
        followWayText,
        followDetail,
        imgSrc = data.accessUrl || '';

    var time = new Date(data.createTm).Format("yyyy-MM-dd hh:mm:ss");

    if (type) {     // 修改商机动态
        followWayText = '<span class="green">状态修改</span>';
        var index = data.opportunityStatus - 1;
        var status = $('.wizard').find('li').eq(index).find('span').html();
        followDetail = '将商机状态修改为<span class="label label-warning">' + status + '</span>';
    } else {        // 跟进动态
        var followWay;
        // console.log(data.followWay);
        switch (Number(data.followWay)) {
            case 1: followWay = '线上电话'; break;
            case 2: followWay = '拜访'; break;
            case 3: followWay = '微信'; break;
            case 4: followWay = '线下电话'; break;
            case 5: followWay = '邮箱'; break;
            case 6: followWay = '陪访'; break;
        }
        followWayText = '<span>' + followWay + '</span>';
        // console.log(followWayText, data)
        followDetail = data.followDetail;
    }
    html += '<div class="follow-list" style="display: none;"><div class="follow-head">';
    html += '<a href="JavaScript:void(0);"><img src="' + imgSrc + '" alt=""></a>' + followWayText;
    html += '</div><div class="follow-text">';
    html += '<h5>跟进人：<span>' + data.userName + '</span>/<em>' + time + '</em></h5>';
    html += '<p>' + followDetail + '</p></div></div>';
    if (data.opportunityDynamicId == undefined) {
        $('#followList').prepend(html).find('.follow-list').slideDown(nSpeed);
    } else {
        $('#followList').append(html).find('.follow-list').slideDown(nSpeed);
    }
}

function echoTrends(pageIndex, pageSize) {
    var jsonData = {
        opportunityId,

        pageIndex: pageIndex,
        pageSize: pageSize,
        sortName: 'createTm',
        sortOrder: 'desc'
    }
    $.ajax({
        url: '/opportunity/opportunityDynamicList',
        type: 'post',
        dataType: 'json',
        async: true,
        data: jsonData,
        success: function (data) {
            if (data.code == '000000') {
                var newData = data.data;
                if (newData.length != 0) {
                    for (var i = 0; i < newData.length; i++) {
                        var type = newData[i].operationMode;
                        addTrends(type, newData[i]);
                    }
                    if ((pageIndex * pageSize) >= data.totalRecords) {
                        console.log('商机动态没有数据了');
                        $(".loading-more").hide();
                    }else{
                        console.log('商机动态有更多数据');
                        $(".loading-more").show();
                    }
                } else {
                    $('#followList').html('<p class="nodata">暂无跟进记录</p>');
                    $(".loading-more").hide();
                }
            } else {
                promptInfo(data.message);
            }
        },
        error: function (message) {
            promptInfo(message);
        }
    })
}

/**
 * 功能：产品列表自定义功能、数据
 * */
var productFormat = {
    // 编辑前行数据
    rowOldData: '',
    // newChose: undefined,
    categories: function (value, row, index, field) {
        return value == '0' ? '非会员' : '会员';
    },
    // 产品价格
    priceChose: function (value, row, index, field) {
        if (row.productCategories == 1) {
            if (field == 'productMemberPrice') {
                var html = '<label class="lyear-radio radio-inline radio-primary"><input type="radio" name="price' + index + '" checked disabled><span>' + (value || '0') +'</span></label>';
                return value;
            } else {
                return '-';
            }
        } else {
            return value;
            // console.log(value, row, index, field);
            var type;
            var priceType;
            if (row.chose == undefined) {
                type = 1;
            } else {
                type = row.chose
            }
            switch (field) {
                case 'productOriginalPrice':
                    priceType = '0';
                    break;
                case 'productUnitPrice':
                    priceType = '1';
                    break;
                case 'productMemberPrice':
                    priceType = '2';
                    break;
            }
            // var type = row.chose || 'productUnitPrice';
            var html = '';
            if (priceType == type) {
                html += '<label class="lyear-radio radio-inline radio-primary"><input type="radio" data-target="' + priceType + '" name="price' + index + '" checked disabled><span>' + (value || '0') +'</span></label>';
            } else {
                html += '<label class="lyear-radio radio-inline radio-primary"><input type="radio" data-target="' + priceType + '" name="price' + index + '" disabled><span>' + (value || '0') +'</span></label>';
            }
            return html;
        }
    },
    // 产品优惠后价格
    discountPrice: function (value, row, index, field) {
        var discountPriceValue;
        var inputId = 'productCurrentPrice' + index;
        if (value || value == 0) {
            discountPriceValue = parseFloat(value);
        } else {
            // 当前报价为空时
            if (row.productCategories == 1) {
                // 会员产品为会员价格
                discountPriceValue = row.productMemberPrice;
            } else {
                // 非会员产品为选择的价格
                var fieldType;
                switch (row.chose) {
                    case '0':
                        fieldType = 'productOriginalPrice';
                        break;
                    case '1':
                        fieldType = 'productUnitPrice';
                        break;
                    case '2':
                        fieldType = 'productMemberPrice';
                        break;
                    default :
                        fieldType = 'productUnitPrice';
                }
                discountPriceValue = row[fieldType];
            }
        }
        row.productCurrentPrice = discountPriceValue;
        var inputHtml = '<input type="text" value="' + (discountPriceValue || '0') + '" placeholder="请输入" class="form-control currentprice" id="' + inputId + '" disabled>';
        return inputHtml;
    },
    // 产品数量
    number: function (value, row, index, field) {
        // console.log(value, row, index, field);
        var numberValue = Number(value) || 1;
        var inputId = 'productNumber' + index;
        var inputHtml = '<input type="text" value="' + numberValue + '" placeholder="请输入" class="form-control number" id="' + inputId + '" disabled>';
        row.productNumber = numberValue || $(inputHtml).val();

        return inputHtml;
    },
    // 总计
    total: function (value, row, index, field) {
        if (row.productCategories == 1) {
            // 会员产品总计价格 = 会员价格 * 数量
            return row.productMemberPrice * row.productNumber;
        } else {
            // 非会员产品总计价格 = 产品选择的价格 * 数量
            // 价格默认为产品单价
            var priceType;
            switch (row.chose) {
                case 0:
                    priceType = 'productOriginalPrice';
                    break;
                case 1:
                    priceType = 'productUnitPrice';
                    break;
                case 2:
                    priceType = 'productMemberPrice';
                    break;
                case null:
                    priceType = 'productUnitPrice';
                    break;
            }

            var price = row[priceType];
            var rowTotal = price * row.productNumber;
            row.productTotalPrice = rowTotal;
            return rowTotal;
        }
    },
    // 操作
    operation: function (value, row, index, field) {
        // console.log(value, row, index, field);
        var html = '<button type="button" class="btn btn-default" id="productEdit" onclick="productFormat.editRow(this, \'' + row.opportunityProductId + '\', \'' + index + '\')"><i class="mdi mdi-pencil"></i>编辑</button>';
        html += '<button type="button" class="btn btn-default btn-success hidden" id="productSave" onclick="productFormat.saveRow(this, \'' + row.opportunityProductId + '\')"><i class="mdi mdi-checkbox-marked-circle-outline"></i>保存</button>';
        html += '<button type="button" class="btn btn-default hidden" id="cancelEdit" onclick="productFormat.cancel(this, \'' + index + '\')"><i class="mdi mdi-backup-restore"></i>取消</button>';
        html += '<button type="button" class="btn btn-default btn-danger" onclick="removeRow(this, \'' + row.opportunityProductId + '\', deleteProduct)"><i class="mdi mdi-delete"></i>删除</button>';
        return html;
    },
    editRow: function (_this, rowId, index) {
        var $this = $(_this).parents('table');

        // 编辑之前刷新表格取消其他行的编辑状态
        $('#productTable').bootstrapTable('updateRow', {});

        this.rowOldData = $this.bootstrapTable('getRowByUniqueId', rowId);
        // console.log(rowOldData);
        var row = $this.find('tbody tr').eq(index);
        row.find('#productSave, #cancelEdit').removeClass('hidden');
        row.find('input[type="radio"], input[type="text"]').prop('disabled', false);
        row.find('.btn-danger, #productEdit').addClass('hidden');
    },
    cancel: function (_this, index) {
        // console.log(this.rowOldData)
        $('#productTable').bootstrapTable('updateRow', {
            index: index,
            row: this.rowOldData,
        });
    },
    saveRow: function (_this, rowId) {
        var thisTr = $(_this).parents('tr');
        var thisRow = $('#productTable').bootstrapTable('getRowByUniqueId', rowId);
        // var newChose = thisTr.find('input[type="radio"]:checked').data('target');
        // var chosePrice = thisTr.find('input[type="radio"]:checked').next('span').html();
        var currentPrice = Number(thisTr.find('input.currentprice').val());
        var productNumber = Number(thisTr.find('input.number').val());
        // thisRow.chose = newChose;
        // console.log(thisRow);
        var editRowData = {
            // chose: newChose,                                            // 价格选择
            opportunityId: thisRow.opportunityId,                       // 商机id
            opportunityProductId: thisRow.opportunityProductId,         // 商机产品id
            productName: thisRow.productName,                           // 产品名称
            productCategories: thisRow.productCategories,               // 产品分类：0-非会员；1-会员；
            productOriginalPrice: thisRow.productOriginalPrice,         // 产品原价
            productUnitPrice: thisRow.productUnitPrice,                 // 产品单价
            productMemberPrice: thisRow.productMemberPrice,             // 产品会员价
            // productCurrentPrice: currentPrice || chosePrice,            // 当前报价
            productCurrentPrice: currentPrice,                          // 当前报价
            productNumber: productNumber,                               // 产品数量
        };
        console.log(editRowData);
        $.ajax({
            url: '/opportunity/updateOpportunityProduct',
            contentType: "application/json;charset=UTF-8",
            type: 'POST',
            dataType: "json",
            data: JSON.stringify(editRowData),
            success: function (data) {
                if (data.code == "000000") {
                    console.log('保存数据成功！');
                    thisTr.find('input').attr('disabled', true);
                    thisTr.find('#productSave, #cancelEdit').addClass('hidden');
                    thisTr.find('.btn-danger, #productEdit').removeClass('hidden');

                    $('#productTable').bootstrapTable('refresh');
                }
            },
            error: function (err) {
            }
        });
    },
    // 价格选择操作
    priceCategoryEvent: {
        'change input': function (e, value, row, index) {
            var inputNode = $(e.target)[0];
            // 获取点击的价格类型,并给修改后的 newChose 赋值
            // this.newChose = $(inputNode).data('target');
            $('#productCurrentPrice' + index).val('');
        }
    },
    // 优惠后价格 自定义事件
    priceEvent: {
        'change input': function (e, value, row, index) {
            // var newValue = productPriceTest(e, value, row, this.newChose);
            var newValue = productPriceTest(e, value, row);
            if (newValue == 'stop') return;
            row.productCurrentPrice = newValue;
            $(e.target).val(newValue);
        }
    },
    numberEvent: {
        'change input': function (e, value, row, index) {
            // 对数值进行判断
            var newValue = numberTest(e, value);
            if (newValue == 'stop') return;
        }
    }
};

/**
 * 功能：新增产品弹窗 自定义功能、数据
 * */
var productModalFormat = {
    // 产品类别
    categories: function (value, row, index, field) {
        return value == '0' ? '非会员' : '会员';
    },
    // 产品价格
    priceChose: function (value, row, index, field) {
        // console.log(value, row, index, field);
        var type;
        var priceType;
        if (row.chose == undefined) {
            type = 1;
        } else {
            type = row.chose
        }
        switch (field) {
            case 'productOriginalPrice':
                priceType = '0';
                break;
            case 'productUnitPrice':
                priceType = '1';
                break;
            case 'productMemberPrice':
                priceType = '2';
                break;
        }

        var html = '';
        if (priceType == type) {
            html += '<label class="lyear-radio radio-inline radio-primary"><input type="radio" data-target="' + priceType + '" name="priceModal' + index + '" checked><span>' + value +'</span></label>';
        } else {
            html += '<label class="lyear-radio radio-inline radio-primary"><input type="radio" data-target="' + priceType + '" name="priceModal' + index + '"><span>' + value +'</span></label>';
        }
        return html;
    },
    // 产品优惠后价格
    discountPrice: function (value, row, index, field) {
        // 优惠价为空 隐藏上传审批图片，否则显示
        // value == '' ? $('.approval').hide(0) : $('.approval').show(0);
        // var discountPriceValue = value || '';
        var discountPriceValue;
        value == undefined ? discountPriceValue = '' : discountPriceValue = value;
        if (discountPriceValue != '') {
            discountPriceValue = parseFloat(discountPriceValue);
        }
        var inputId = 'productDiscountPrice' + index;
        var inputHtml = '<input type="text" value="' + discountPriceValue + '" placeholder="请输入" class="form-control" id="modal' + inputId + '">';
        row.productDiscountPrice = discountPriceValue || $(inputHtml).val();
        // console.log(row.productDiscountPrice);

        return inputHtml;
    },
    // 产品数量
    number: function (value, row, index, field) {
        // console.log(value, row, index, field);
        var numberValue = Number(value) || 1;
        var inputId = 'productNumber' + index;
        var inputHtml = '<input type="text" value="' + numberValue + '" placeholder="请输入" class="form-control" id="modal' + inputId + '">';
        row.productNumber = numberValue || $(inputHtml).val();

        return inputHtml;
    },
    // 总计
    total: function (value, row, index, field) {
        // 价格默认为产品单价
        var price = row[row.chose] || row.productUnitPrice;
        // console.log(price);
        var rowTotal = price * row.productNumber;
        row.productTotalPrice = rowTotal;

        return rowTotal;
    },
    // 操作
    operation: function (value, row, index, field) {
        // console.log(value, row, index, field);
        return '<button type="button" class="btn btn-default btn-danger" onclick="removeRow(this, \'opportunityProductId\', \'' + row.opportunityProductId + '\')"><i class="mdi mdi-delete"></i>删除</button>';
    },
    // 价格选择操作
    priceCategoryEvent: {
        'change input': function (e, value, row, index) {
            var inputNode = $(e.target)[0];
            row.chose = $(inputNode).data('target');
            // console.log(value);
            productModalFormat.priceChose(value, row);
            // 修改价格类型后，清空产品优惠后价格
            productModalFormat.discountPrice('', row);
            productModalFormat.total(value, row, index, 'productTotal');
            $('#productListTable').bootstrapTable('updateRow', {
                index,
                replace: true,
                row
            });
        }
    },
    // 优惠后价格 自定义事件
    priceEvent: {
        'change input': function (e, value, row, index) {
            var newValue = productPriceTest(e, value, row);
            if (newValue == 'stop') return;

            productModalFormat.discountPrice(newValue, row);
            $('#productListTable').bootstrapTable('updateRow', {
                index,
                replace: true,
                row
            });
        }
    },
    numberEvent: {
        'change input': function (e, value, row, index) {
            // 对数值进行判断
            var newValue = numberTest(e, value);
            if (newValue == 'stop') return;

            productModalFormat.number(newValue, row);
            productModalFormat.total(value, row, index, 'productTotal');

            $('#productListTable').bootstrapTable('updateRow', {
                index,
                replace: true,
                row
            });
        }
    }
};

/**
 * 产品表格查询条件
 */
function productQueryParams(params){
    params.pageSize = params.limit || 5;
    params.pageIndex = (params.offset / params.limit) + 1 || 1;
    params.sortName = params.sort;                  //排序列名
    params.sortOrder = params.order;                //排序方式

    //产品列表搜索条件
    params.opportunityId = opportunityId;
    return params;
}

/**
 * 添加产品弹窗查询条件
 */
function productModalQueryParams(params){
    params.pageSize = params.limit;
    params.pageIndex = (params.offset / params.limit) + 1;
    params.sortName = params.sort;                  //排序列名
    params.sortOrder = params.order;                //排序方式

    //产品列表搜索条件
    params.productName = $.trim($('#searchProductName').val());         // 产品名称
    params.productCategories = $('#productCategories').find('input:checked').val(); // 会员类型
    return params;
}

/**
 * 功能：产品数量判断
 * */
function numberTest(e, preValue) {
    // 移除字符串的空格
    var newVal = $(e.target).val().replace(/\s/g,"");
    // console.log(newVal == preValue)
    if (newVal == '0') {
        console.log('输入内容为0，数量必须大于等于1');
        promptInfo('数量必须大于等于 1，请重新输入！');
        $(e.target).val(preValue);
        return 'stop';
    }
    if (newVal % 1 !== 0 || newVal < 0 || newVal == '') {
        console.log('输入内容非整数或者小于0');
        promptInfo('数量只能为正整数，请重新输入！');
        $(e.target).val(preValue);
        return 'stop';
    }
    if (newVal == preValue) {
        console.log('数值未改变');
        $(e.target).val(preValue);
        return 'stop';
    }
    return newVal;
}

/**
 * 功能：产品列表价格判断
 * */
function productPriceTest(e, preValue, row) {
    // console.log(e, preValue, row);
    /*if (newChose == undefined) {
        newChose = row.chose;
    }
    var priceType;
    var typeTitle;
    switch (newChose) {
        case 0:
            priceType = 'productOriginalPrice';
            typeTitle = '产品原价';
            break;
        case 1:
            priceType = 'productUnitPrice';
            typeTitle = '产品单价';
            break;
        case 2:
            priceType = 'productMemberPrice';
            typeTitle = '产品会员价';
            break;
        default :
            priceType = 'productMemberPrice';
            typeTitle = '产品会员价';
            break;
    }*/
    // 移除字符串的空格
    var newVal = $(e.target).val().replace(/\s/g,"");

    if (newVal == '') {
        $(e.target).val(preValue);
        console.log('输入为空值');
        return '';
    }
    if (newVal == preValue) {
        console.log('数值未改变');
        $(e.target).val(preValue);
        return 'stop';
    }
    if (isNaN(newVal) || newVal < 0) {
        console.log('输入内容非数字或者小于0');
        promptInfo("请输入正确的价格！");
        $(e.target).val(preValue);
        return 'stop';
    } else {
        if (row.productCategories == 1) {
            if (parseFloat(newVal) > row.productMemberPrice) {
                promptInfo('产品优惠后价格不能高于会员卡价格，请重新输入！');
                $(e.target).val(preValue);
                return 'stop';
            }
        } else {
            // console.log(newChose)
            // 判断输入值是否高于 所选择的价格
            /*if (parseFloat(newVal) > row[priceType]) {
                promptInfo('产品优惠后价格不能高于所选 "' + typeTitle + '" 价格，请重新输入！');
                $(e.target).val('');
                return 'stop';
            }*/
        }
    }
    return parseFloat(newVal).toFixed(2);
    // return parseInt(newVal);
}

/**
 * 删除行
 * @参数：fieldId - 删除行的目标列字段名称  value - 目标字段值
 * */
function removeRow(_this, uniqueId, func) {
    $(_this).parents('table').bootstrapTable('removeByUniqueId', uniqueId);
    // 删除行之后执行相关删除数据操作
    func && func(uniqueId);
}

/**
 * 功能：删除产品操作
 * */
function deleteProduct(value) {
    var data = {
        opportunityProductId: value
    };
    $.ajax({
        url: '/opportunity/deleteOpportunityProduct',
        contentType: "application/json;charset=UTF-8",
        type: 'POST',
        dataType: "json",
        data: JSON.stringify(data),
        success: function (data) {
            if (data.code == "000000") {
                console.log('删除产品成功');
                // 删除产品时，重置创建合同选中状态
                $('#addContractAction input').prop('checked', false);
                $('#addContractAction button').prop('disabled', true);
            }
        },
        error: function (err) {
            console.log('删除失败时刷新表格', err);
            // $('#productTable').bootstrapTable('refresh');
        }
    })
}

/**
 * 功能：提醒弹窗
 * */
function promptInfo(content, callBack) {
    $.alert({
        title: '温馨提示',
        content: content,
        scrollToPreviousElement: false,
        scrollToPreviousElementAnimate: false,
        buttons: {
            confirm: {
                text: '确认',
                btnClass: 'btn-primary',
                action: callBack
            }
        }
    });
}

/**
 * 功能：商机联系人
 * */
// 商机联系人查询条件
function contactQueryParams(params){
    params.pageSize = params.limit;
    params.pageIndex = (params.offset / params.limit) + 1;
    params.sortName = params.sort;                  // 排序列名
    params.sortOrder = params.order;                // 排序方式

    //普通搜索条件
    params.opportunityId = opportunityId;           // 商机ID
    return params;
}
// 商机联系人弹窗查询条件
function contactModalQueryParams(params){
    params.pageSize = params.limit;
    params.pageIndex = (params.offset / params.limit) + 1;
    params.sortName = params.sort;                  // 排序列名
    params.sortOrder = params.order;                // 排序方式

    //普通搜索条件
    params.contactName = $.trim($('#searchContactName').val());         // 产品名称
    params.customerId = customerId;                                     // 客户ID
    return params;
}

/**
 * 功能：添加联系人
 * */
function addContact(originalTableId, targetTableId) {
    // $('#addContactBtn').addClass('disabled');

    var $originalTable = $('#' + originalTableId);
    var selectRowData = $originalTable.bootstrapTable('getSelections');

    // 判断是否选择了联系人类型
    var flag = false;
    for (var i = 0; i < selectRowData.length; i++) {
        if (selectRowData[i].contactType == undefined) {
            $('#addContactBtn').removeClass('disabled');
            flag = true;
            break;
        }
    }
    if (flag) {
        $.alert({
            title: '提醒',
            content: '请选择联系人类型！'
        })
        return;
    }

    if (selectRowData.length == 0) {
        // 弹窗表格未选择时直接关闭弹窗
        $originalTable.parents('.modal').modal('hide');
        $('#addContactBtn').removeClass('disabled');
        return;
    }

    var alreadyProduct = '';
    for (var i = 0; i < selectRowData.length; i++) {
        var data = {
            "contactId": selectRowData[i].contactId,                        //联系人id
            "contactName": selectRowData[i].contactName,                    //联系人姓名
            "contactPosition": selectRowData[i].contactPosition,            //联系人职务
            "contactInformation": selectRowData[i].contactInformation,      //联系方式
            "contactType": selectRowData[i].contactType,                    //联系人类型  0首要联系人  1次要联系人
            "abolishState": '1',                                            //废止状态  1启动 2废止
            "opportunityId": opportunityId                                  //商机id
        };
        // console.log(data);
        $.ajax({
            url: '/opportunity/addOpportunityContact',
            contentType: "application/json;charset=UTF-8",
            type: 'POST',
            dataType: "json",
            async: false,
            data: JSON.stringify(data),
            success: function (data) {
                if (data.code == "000000") {
                    $('#addContactModal').modal('hide');
                    $('#contactList').bootstrapTable('refresh');
                    $('#addContactBtn').removeClass('disabled');
                } else if (data.code == 'EX0001') {
                    // $.alert('产品:' + JSON.parse(this.data).productName + '已存在于产品列表中,不能重复添加!');
                    alreadyProduct += '<p><span class="label label-info">' + JSON.parse(this.data).giftName + '</span></p>';
                }
            },
            error: function (err) {
                console.log(err);
            }
        })
    }
    alreadyProduct !== '' && promptInfo('<h5>下列产品已存在于赠品列表中：</h5>' + alreadyProduct);
    $('#addContactModal').modal('hide');
    /*$('#addContactModal').on('hidden.bs.modal', function () {
        $('#addContactBtn').removeClass('disabled');
    });*/
}

function handleUp() {
    var valInitData=$("#customerIntention").val()
    $("#customerIntention").val(valInitData.replace(/[^\d+$]/ig,''))
    if($("#customerIntention").val()>100){
        $("#customerIntention").val('')
    }

}

function openCustomer () {
    parent.$(parent.document).data('multitabs').create({
        iframe: true,
        title: '客户详情',
        url: "/front/user/customerManager/customerDetail?customerId=" + customerId
    }, true);
}

/**
 * 功能：重置合作开发人员模块内容并隐藏
 * */
function hideCooperate() {
    var $cooperateWell = $('#cooperateWell');
    $cooperateWell.find('select').val('').selectpicker('refresh');
    $cooperateWell.find('select#accountList').prop('disabled', true).selectpicker('refresh');
    $('#cooperateTable').bootstrapTable('removeAll');
    $cooperateWell.hide();
}

/**
 * 功能：优惠券
 * */
function couponTable(columnsFlag, type) {
    var choseType = type || 'radio';
    $('#couponListTable').bootstrapTable('destroy');
    $('#couponListTable').bootstrapTable({
        classes: 'table table-bordered table-hover table-striped',
        url: '/coupon/selectAvailableCouponPageList',           // 请求地址
        method: 'post',                                         // 请求方式
        contentType: "application/json;charset=UTF-8",          // 请求内容类型
        dataType: "json",                                       // 数据类型
        striped: true,                                          // 是否显示行间隔色
        sortable: true,                                         // 是否启用排序
        sortOrder: "desc",                                      // 排序方式
        sortName: 'createTm',                                   // 排序字段
        cache: false,                                           // 是否使用缓存
        showColumns: false,                                     // 显示隐藏列
        showRefresh: false,                                     // 显示刷新按钮
        showToggle: false,                                      // 切换显示样式
        showFooter: false,                                      // 显示Table脚部
        pagination: true,                                       // 是否显示分页
        showPaginationSwitch: false,                            // 是否显示分页按钮
        clickToSelect: true,                                    // 是否启用点击选中行
        singleSelect: false,
        minimumCountColumns: 2,                                 // 最少要显示的列数
        undefinedText: '-',                                     // cell没有值时显示
        sidePagination: "server",                               // 分页方式：client客户端分页，server服务端分页
        uniqueId: 'receiveCouponId',
        idField: 'receiveCouponId',
        pageSize: 5,                                            // 每页的记录行数
        pageNumber: 1,                                          // 初始化加载第1页，默认第1页
        pageList: "[5, 10, 15, 20]",                            // 可供选择的每页的行数
        // maintainMetaData: true,
        maintainSelected :true,

        serverSelected: !columnsFlag,                           // 开启后端分页记住已选项功能
        serverSelectedField: "receiveCouponId",                 // 已选项的唯一识别主键

        queryParams: couponQueryParams,                         //查询参数
        columns: [
            {title: '主键', field: 'receiveCouponId', visible: false},
            {[choseType]: true, visible: true, width: 40},
            {title: '优惠券名称',field: 'couponName', align: 'left', valign: 'middle'},
            {title: '优惠券类型', field: 'couponType',align: 'left', valign: 'middle', formatter: couponFormat.couponType},
            {title: '优惠券额度', field: 'couponQuota',align: 'left', valign: 'middle', visible: !columnsFlag,
                formatter: function (value, row, index, field) {
                    return row.couponType == '1' ? '' : value;
                }
            },
            {title: '优惠券优惠折扣', field: 'couponDiscount',align: 'left', valign: 'middle', visible: columnsFlag,
                formatter: function (value, row, index, field) {
                    return row.couponType == '1' ? value : '';
                }
            },
            {title: '是否可叠加', field: 'useType', align: 'left', valign: 'middle', visible: !columnsFlag,
                formatter: function (value, row, index, field) {
                    return value == '0' ? '<span class="label label-success">可叠加</span>' : '<span class="label label-warning">不可叠加</span>';
                }
            },
        ],
        responseHandler: function (result) {
            if(result.code == "000000") {
                var obj = {
                    "rows": result.data,
                    "total": result.totalRecords//总条数
                };
            } else {
                var obj = {
                    "total": 0,
                    "rows": [],
                }
            }
            return obj;
        },
        onLoadSuccess: function (data) {
        },
        onLoadError: function (status) {
            if (status == 403) {
                alert("权限不足！禁止访问！");
            } else {
                //加载失败时执行
                alert("加载失败！");
            }
        },
        formatLoadingMessage: function () {
            return "请稍等，加载中...";
        },
        formatNoMatches: function () {
            return '无符合条件的记录';
        },
        onCheck: function(row, $element) {
            var selectedRow;
            if ($('#couponCategories input:checked').val() == '1') {
                selectedRow = $('#couponListTable').bootstrapTable('getSelections');
            } else {
                selectedRow = $('#couponListTable').bootstrapTable('getServerSelected', true);
            }

            console.log(selectedRow)
            if (selectedRow.length > 1) {
                // 第一个选择的优惠券类型
                var firstChosedType = selectedRow[0].useType;   // 0-可叠加 1-不可叠加
                // 当前选择优惠券类型
                var thisChosedType = row.useType;

                if (firstChosedType == '1' || (firstChosedType == '0' && thisChosedType == '1')) {
                    console.log('不可叠加');
                    promptInfo('不可叠加优惠券不能和其他优惠券同时使用！', function () {
                        $element.trigger('click');
                    })
                }
            }
        },
        onPostBody: function () {
            $('#couponListTable th.bs-checkbox .lyear-checkbox').hide();
        }
    });
}

/**
 * 添加优惠券弹窗查询条件
 */
function couponQueryParams(params){
    var productListArr = [];
    var productDatas = $('#productTable').bootstrapTable('getData', true);
    for (let i = 0; i < productDatas.length; i++) {
        productListArr.push(productDatas[i].customerProductId);
    }
    var data = {
        pageSize : params.limit,
        pageIndex : (params.offset / params.limit) + 1,

        customerId,                                                         // 客户id
        productList: productListArr,                                        // 产品idList
        productTotalPrice: Number($('#discountTotal').text()),              // 产品总价格
        couponType: $('input[name="couponCategories"]:checked').val(),      // 优惠券类型：1-折扣类 2-额度类
        couponName: $.trim($('#searchCouponName').val()),                   // 优惠券名称
    }
    return JSON.stringify(data);
}

/**
 * 优惠券列表 - 自定义内容
 * */
var couponFormat = {
    couponType: function (value, row, index, field) {
        if (value == '1') {
            return '折扣类'
        } else {
            return '额度类'
        }
    },
    operation: function (value, row, index, field) {
        return '<button type="button" class="btn btn-default btn-danger" onclick="removeCouponRow(this, \'' + row.chsCustomerCouponId + '\')"><i class="mdi mdi-delete"></i>删除</button>';
    }
}

/**
 * 功能：添加行
 * 参数：originalTableId - 原表格id  targetTableId - 目标表格id
 * */
function addRow(originalTableId, targetTableId) {
    // 优惠券判断
    if (originalTableId == 'couponListTable') {
        var couponList = $('#couponTable').bootstrapTable('getData', true);
        if (couponList.length) {
            $('#couponTable').bootstrapTable('removeAll');
        }
    }

    var $originalTable;
    var selectRowData;
    var $targetTable = $('#' + targetTableId);
    var targetTabelDate = $targetTable.bootstrapTable('getData', true);


    if (typeof originalTableId == 'object') {
        selectRowData = originalTableId;
    } else {
        $originalTable = $('#' + originalTableId);
        // selectRowData = $originalTable.bootstrapTable('getSelections');
        if (originalTableId == 'couponListTable') {
            // 优惠券
            // selectRowData = $originalTable.bootstrapTable('getSelections');
            if ($('#couponCategories input:checked').val() == '1') {
                selectRowData = $originalTable.bootstrapTable('getSelections');
            } else {
                selectRowData = $originalTable.bootstrapTable('getServerSelected', true);
            }
        } else {
            selectRowData = $originalTable.bootstrapTable("getServerSelected", true);
        }
    }

    if (selectRowData.length == 0) {
        // 弹窗表格未选择时直接关闭弹窗
        $originalTable.parents('.modal').modal('hide');
        return;
    }

    var targetId;
    var priceField;
    var numberField;

    if (!!selectRowData[0].customerProductId) {
        // 产品列表字段
        targetId = 'customerProductId';
        priceField = 'productDiscountPrice';
        numberField = 'productNumber';
    }
    if (!!selectRowData[0].productActivityId) {
        // 活动产品列表字段
        targetId = 'productActivityId';
        priceField = 'activityDiscountPrice';
        numberField = 'activityNumber';
    }
    if (!!selectRowData[0].giftActivityName) {
        // 赠品列表字段
        targetId = 'giftActivityName';
        numberField = 'giftActivity';
    }
    if (typeof originalTableId == 'object') {
        targetId = 'productGiftActivityId';
    }
    // console.log(selectRowData);
    if (targetTabelDate.length == 0 ) {
        for (var i = 0; i < selectRowData.length; i++) {
            selectRowData[i][priceField] = '';
            selectRowData[i][numberField] = 1;
            // productMemberPrice[i].chose=
        }
        // 目标表格为空时直接插入行
        $targetTable.bootstrapTable('append', selectRowData);
    } else {
        var targetTableDateStr =  JSON.stringify(targetTabelDate);
        // 目标表格不为空判断是否已存在于表格中
        for (var i = 0; i < selectRowData.length; i++) {
            var str = '"' + targetId + '":"' + selectRowData[i][targetId] + '"';
            if (targetTableDateStr.indexOf(str) != -1) {
                lightyear.notify('所添加产品(' + selectRowData[i].productName + ')已存在，不能重复添加。', 'warning', 1200, '', 'top', 'right');
            } else {
                selectRowData[i][priceField] = '';
                selectRowData[i][numberField] = 1;
                // selectRowData[i].chose=selectRowData[i]
                $targetTable.bootstrapTable('append', selectRowData[i]);
            }
        }
    }
    if (typeof originalTableId == 'string') {
        $originalTable.parents('.modal').modal('hide');
    }
    // var productData = $('#productTable').bootstrapTable('getData', true);
}

/**
 * 功能：删除行
 * 参数：fieldId - 删除行的目标列字段名称  value - 目标字段值
 * */
function removeCouponRow(_this, fieldId, value) {
    $(_this).parents('table').bootstrapTable('removeByUniqueId', fieldId);
}

// 优惠券数据反显
function couponTableInit() {
    //先销毁表格
    $('#couponTable').bootstrapTable('destroy');
    $('#couponTable').bootstrapTable({
        classes: 'table table-bordered table-hover table-striped',
        url: '/contractCoupon/selectContractCouponByContractId?contractId=' + opportunityData.contractId,
        method: 'get',                  // 请求方式
        contentType: "application/x-www-form-urlencoded",//请求内容类型
        dataType: "json",               // 数据类型
        striped: true,                  // 是否显示行间隔色
        pagination: false,              // 是否显示分页
        undefinedText: '-',             // cell没有值时显示
        uniqueId: 'contractCouponId',
        idField: 'contractCouponId',
        columns: [
            {title: '主键', field: 'contractCouponId', visible: false},
            {title: '序号', field: 'index', align: 'left', valign: 'middle', width: '60',
                formatter: function (value, row, index) {
                    return index + 1;
                }
            },
            {title: '优惠券名称',field: 'couponName', align: 'left', valign: 'middle'},
            {title: '优惠券类型', field: 'couponType',align: 'left', valign: 'middle',
                formatter: function (value, row, index, field) {
                    if (value == '1') {
                        return '折扣类'
                    } else {
                        return '额度类'
                    }
                }
            },
            {title: '优惠券额度', field: 'couponQuota',align: 'left', valign: 'middle'},
            {title: '优惠券优惠折扣', field: 'couponDiscount',align: 'left', valign: 'middle'},
        ],
        responseHandler: function (result) {
            if (result.code == "000000") {
                var obj = {
                    "rows": result.data,
                };
            } else {
                var obj = {
                    "rows": [],
                }
            }
            return obj;
        },
    });
}
